From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/minibox/README | 15 ++ macros/latex/contrib/minibox/minibox.ins | 4 + macros/latex/contrib/minibox/minibox.pdf | Bin 0 -> 280644 bytes macros/latex/contrib/minibox/minibox.tex | 290 +++++++++++++++++++++++++++++++ 4 files changed, 309 insertions(+) create mode 100644 macros/latex/contrib/minibox/README create mode 100644 macros/latex/contrib/minibox/minibox.ins create mode 100644 macros/latex/contrib/minibox/minibox.pdf create mode 100644 macros/latex/contrib/minibox/minibox.tex (limited to 'macros/latex/contrib/minibox') diff --git a/macros/latex/contrib/minibox/README b/macros/latex/contrib/minibox/README new file mode 100644 index 0000000000..6c67119faf --- /dev/null +++ b/macros/latex/contrib/minibox/README @@ -0,0 +1,15 @@ +___________________ +The minibox package +v0.2a + +A small package to provide a convenient input syntax for +boxes that don't break their text over lines automatically, +but do allow manual lines breaks, and that shrink to +the natural width of the maximum line width. + + \minibox{Some\\ broken\\ text} + \minibox[c]{Centred\\ broken\\ text} + \minibox[c,t]{Centred\\ aligned\\ top} + +Will Robertson +Copyright 2009, 2013 diff --git a/macros/latex/contrib/minibox/minibox.ins b/macros/latex/contrib/minibox/minibox.ins new file mode 100644 index 0000000000..3a2b5b18d9 --- /dev/null +++ b/macros/latex/contrib/minibox/minibox.ins @@ -0,0 +1,4 @@ +%&latex +\def\pstoolCompile{N} +\input minibox.tex +\csname@@end\endcsname diff --git a/macros/latex/contrib/minibox/minibox.pdf b/macros/latex/contrib/minibox/minibox.pdf new file mode 100644 index 0000000000..fc5fe20047 Binary files /dev/null and b/macros/latex/contrib/minibox/minibox.pdf differ diff --git a/macros/latex/contrib/minibox/minibox.tex b/macros/latex/contrib/minibox/minibox.tex new file mode 100644 index 0000000000..98537a2460 --- /dev/null +++ b/macros/latex/contrib/minibox/minibox.tex @@ -0,0 +1,290 @@ +\def\pkgname{minibox} + +\RequirePackage{filecontents} +\begin{filecontents*}{README.txt} +___________________ +The minibox package +v0.2a + +A small package to provide a convenient input syntax for +boxes that don't break their text over lines automatically, +but do allow manual lines breaks, and that shrink to +the natural width of the maximum line width. + + \minibox{Some\\ broken\\ text} + \minibox[c]{Centred\\ broken\\ text} + \minibox[c,t]{Centred\\ aligned\\ top} + +Will Robertson +Copyright 2009, 2013 +\end{filecontents*} + + +%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5%%%%%%%%%6%%%%%%%%%7%%%%%%%%% +\begin{filecontents*}{minibox.sty} +% \begin{macrocode} +\RequirePackage{expl3} +\ProvidesExplPackage + {minibox} + {2013/06/21} + {0.2a} + {Another type of box.} +% \end{macrocode} +% +% \begin{macrocode} +\bool_new:N \l_minibox_frame_bool +\keys_define:nn {minibox} + { + frame .choice: , + frame / true .code:n = { \bool_set_true:N \l_minibox_frame_bool } , + frame / false .code:n = { \bool_set_false:N \l_minibox_frame_bool } , + frame .default:n = { true } , + + l .code:n = { \tl_set:Nn \l_minibox_tabular_preamble_tl {l} } , + c .code:n = { \tl_set:Nn \l_minibox_tabular_preamble_tl {c} } , + r .code:n = { \tl_set:Nn \l_minibox_tabular_preamble_tl {r} } , + + t .code:n = { \tl_set:Nn \l_minibox_tabular_valign_tl {t} } , + m .code:n = { \tl_set:Nn \l_minibox_tabular_valign_tl {c} } , + b .code:n = { \tl_set:Nn \l_minibox_tabular_valign_tl {b} } , + + rule .dim_set:N = \l_minibox_rule_dim , + pad .dim_set:N = \l_minibox_pad_dim , + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new:Npn \miniboxsetup #1 { \keys_set:nn {minibox} {#1} } +\miniboxsetup {l,m,rule=\fboxrule,pad=\fboxsep} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand\minibox[2][] + { + \group_begin: + \keys_set:nn {minibox} {#1} + \bool_if:NTF \l_minibox_frame_bool + { + \setlength\fboxrule{\l_minibox_rule_dim} + \setlength\fboxsep{\l_minibox_pad_dim} + \fbox + } + { \use:n } + { + \use:x + { + \exp_not:N \begin{tabular} + [\l_minibox_tabular_valign_tl] + { @{} \l_minibox_tabular_preamble_tl @{} } + \exp_not:n {#2} + \exp_not:N \end{tabular} + } + } + \group_end: + } +% \end{macrocode} +\end{filecontents*} +%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5%%%%%%%%%6%%%%%%%%%7%%%%%%%%% + + + + +% Conditionally compile the documentation & generate the .ins file: +\providecommand\pstoolCompile{Y} +\if\pstoolCompile N + \expandafter\endinput +\fi + + +\begin{filecontents*}{\pkgname.ins} +%&latex +\def\pstoolCompile{N} +\input minibox.tex +\csname@@end\endcsname +\end{filecontents*} + + + + +\makeatletter +\documentclass{ltxdoc} + +\usepackage[rm,medium]{titlesec} + +\usepackage{xcolor,booktabs} +\usepackage[colorlinks,linktocpage]{hyperref} + +\usepackage{tocloft,varwidth,array} +\setcounter{tocdepth}{1} +\def\tocwidthA{0.45} +\def\tocwidthB{0.45} +\def\cftpartfont{\scshape} +\def\cftsecfont{\small} +\cftbeforesecskip=0pt +\def\cftpartleader{} +\def\cftpartafterpnum{\cftparfillskip} +\def\cftsecleader{} +\def\cftsecafterpnum{\cftparfillskip} + +\let\pkg\textsf +\def\pkgopt#1{\texttt{[#1]}} + +\def\PDF{\textsc{pdf}} +\def\PS{\textsc{ps}} +\def\DVI{\textsc{dvi}} +\def\EPS{\textsc{eps}} + +\usepackage{\pkgname} +\usepackage[T1]{fontenc} +\usepackage{microtype} +\usepackage{lmodern} +\linespread{1.1} +\frenchspacing + +\GetFileInfo{\pkgname.sty} +\begin{document} + +\title{The \pkg{\pkgname} package} +\author{Will Robertson\\\texttt{wspr81@gmail.com}} +\date{\fileversion\qquad\filedate} + +\maketitle + +\section{Introduction} + +It's sometimes useful to be able to stack text over lines +in a small box; this is similar to paragraph text broken over lines, but +for small amounts of text when automatic line breaking is not required. +In other words, I'm looking for an \cmd\mbox\ that allows manual line breaks. +\begin{center} +\fbox{\vbox{\hbox{abcd}\hbox{efg}\hbox{h}}} +\end{center} +This sort of thing is a little awkward in plain \TeX\ and \LaTeX. +\begin{center} +|\vbox{\hbox{abcd}\hbox{efg}\hbox{h}}|\par +\end{center} + +\section{The command \cs{minibox}} + +This package defines the \cmd\minibox\DescribeMacro{\minibox}\ command +to write this more conveniently separately lines with \verb"\\". +Various options are allowed to control the alignment and whether to frame the box, shown in Table~\ref{opt}. + +\begin{table} +\centering +\begin{tabular}{rl} +\toprule +\texttt{frame(=true)} & Has a frame \\ +\texttt{frame=false} & Has not a frame (default) \\ +\texttt{rule=}\meta{dim} & Thickness of the rule (default \the\fboxrule) \\ +\texttt{pad=}\meta{dim} & Space on the inside of the frame (default \the\fboxsep) \\ +\midrule +\texttt{l} & Left-aligned text (default) \\ +\texttt{c} & Centred text \\ +\texttt{r} & Right-aligned text \\ +\midrule +\texttt{b} & Align the box with the bottom line \\ +\texttt{m} & Vertically centre the box (default) \\ +\texttt{t} & Align the box with the top line \\ +\bottomrule +\end{tabular} +\caption{Optional arguments for the \cs{minibox} command.} +\label{opt} +\end{table} + +\subsection{Horizontal alignment of the text} +Here's an example adjusting the horizontal alignment. +\miniboxsetup{frame} +\begin{center} +\verb|\def\x{abcd\\efg\\h}| +\def\x{abcd\\efg\\h} +\begin{tabular}{ccc} +\verb"\minibox{\x}" & +\verb"\minibox[c]{\x}" & +\verb"\minibox[r]{\x}" \\ +\minibox{\x} & +\minibox[c]{\x} & +\minibox[r]{\x} +\end{tabular} +\end{center} + +\subsection{Vertical alignment of the box} +Here's an example adjusting the vertical alignment. +\begin{center} +\verb|\def\x{abcd\\efg\\h}| +\medskip + +\def\x{abcd\\efg\\h} +\begin{tabular}{ccc} +\verb"xyz\minibox{\x}" & +\verb"xyz\minibox[b]{\x}" & +\verb"xyz\minibox[t]{\x}" \\ +xyz\minibox{\x} & +xyz\minibox[b]{\x} & +xyz\minibox[t]{\x} +\end{tabular} +\end{center} + +\subsection{Framing your box} +The boxes which are showed in these examples are not displayed by default; use the \verb"frame" option to make them appear: +\miniboxsetup{frame=false} +\begin{center} +\verb|\def\x{abcd\\efg\\h}| +\medskip + +\def\x{abcd\\efg\\h} +\begin{tabular}{ccc} +\verb"\minibox{\x}" & +\verb"\minibox[frame]{\x}" & +\verb"\minibox[frame,rule=1pt,pad=0pt]{\x}" \\ +\minibox{\x} & +\minibox[frame]{\x} & +\minibox[frame,rule=1pt,pad=0pt]{\x} \\ +\end{tabular} +\end{center} +Negative values can be input for \texttt{pad}. +\begin{quote}\itshape +\LaTeX\ experts: while these padding and rule options are internally controlled by \cs{fboxsep} and \cs{fboxrule}, changing these variables will have no effect on \cs{minibox}'s behaviour. Use \cs{miniboxsetup} as described next to change these options globally. +\end{quote} + +\subsection{Setting options} + +Obviously, any combination of these options can be applied: +\begin{center} +\verb|\def\x{abcd\\efg\\h}| +\medskip + +\def\x{abcd\\efg\\h} +\begin{tabular}{ccc} +\verb"x\minibox[frame]{\x}" & +\verb"x\minibox[frame,c,b]{\x}" \\ +x\minibox[frame]{\x} & +x\minibox[frame,c,b]{\x} +\end{tabular} +\end{center} +\DescribeMacro{\miniboxsetup} +You can change the defaults of \cs{minibox} using this command. +\begin{center} +\verb|\def\x{abcd\\efg\\h}| +\medskip + +\def\x{abcd\\efg\\h} +\begin{tabular}{ccc} +& \verb"\miniboxsetup{frame,r}" \\ +\verb"\minibox{\x}" & +\verb"\minibox{\x}" \\ +\minibox{\x} & +\miniboxsetup{frame,r}\minibox{\x} +\end{tabular} +\end{center} + +\section{Licence} + +This package is freely modifiable and distributable under the terms and conditions of the \LaTeX\ Project Public Licence, version 1.3c or greater (your choice). The latest version of +this license is available at: \url{http://www.latex-project.org/lppl.txt}. This work is maintained by \textsc{Will Robertson}. + +\newpage +\part{Implementation} +\parindent=0pt +\DocInput{\pkgname.sty} +\end{document} -- cgit v1.2.3