summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/spacingtricks/spacingtricks.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/spacingtricks/spacingtricks.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/spacingtricks/spacingtricks.dtx')
-rw-r--r--macros/latex/contrib/spacingtricks/spacingtricks.dtx585
1 files changed, 585 insertions, 0 deletions
diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.dtx b/macros/latex/contrib/spacingtricks/spacingtricks.dtx
new file mode 100644
index 0000000000..cfc25cb650
--- /dev/null
+++ b/macros/latex/contrib/spacingtricks/spacingtricks.dtx
@@ -0,0 +1,585 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019 by Antoine Missier <antoine.missier@ac-toulouse.fr>
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, either version 1.3 of this license
+% or (at your option) any later version. The latest version of this
+% license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX version
+% 2005/12/01 or later.
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{spacingtricks.dtx}
+%</driver>
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+\ProvidesPackage{spacingtricks}
+ [2019/06/26 v1.0 .dtx spacingtricks file]
+%</package>
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[french,english]{babel}
+\usepackage{lmodern}
+\usepackage{spacingtricks}
+\usepackage{pifont}
+\usepackage{amsmath}
+\usepackage{pstricks-add}
+\DisableCrossrefs
+%\CodelineIndex
+%\RecordChanges
+\usepackage{hyperref}
+\hypersetup{%
+ colorlinks,
+ linkcolor=blue,
+ citecolor=blue,
+ pdftitle={spacingtricks},
+ pdfsubject={LaTeX package},
+ pdfauthor={Antoine Missier}
+}
+\begin{document}
+ \DeleteShortVerb{\|}
+ \MakeShortVerb{\"}
+ \DocInput{spacingtricks.dtx}
+ %\PrintChanges
+ %\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{882}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.1}{2011/12/27}{Initial version}
+% \changes{v1.0}{2019/05/04}{dtx and ins files, added the footnote command}
+% \changes{v1.0}{2019/06/16}{English translation of the documentation}
+%
+% \GetFileInfo{spacingtricks.sty}
+%
+% \title{The \texttt{spacingtricks} package\thanks{This document
+% corresponds to \textsf{spacingtricks}~\fileversion, initial version \filedate.}}
+% \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}}
+% \date{June 26, 2019}
+% \maketitle
+%
+% \section{Introduction}
+%
+% This package proposes some macros to deal with spacing issues. Thus:
+%
+% \begin{compactlist}
+% \item "\centered" yields good horizontal centering without vertical spacing;
+% \item "\footnote" has been redefined to avoid unsuitable spacings;
+% \item "\vstrut" produces a strut with variable height or depth;
+% \item "\indent" has been redefined to indent a line at the beginning
+% of a particular paragraph even if "\parindent" has been set to 0;
+% \item the "indentblock" environment produces indentation of all its content;
+% \item the "compactlist" environment yields a compact list, without vertical spacing
+% between the items, like here;
+% several aliases are provided to type some list symbols shorter:
+% "\bul", "\dash", "\ddash", "\aster", "\hand", "\checksymb", "\arrowsymb";
+% \item the macros "\ie" and "\eg" attends to typeset common abbreviations
+% \ie and \eg with correct spacings;
+% \item the "\dualboxes" command attends to place two boxes
+% (figures, tables, text) side by side by adjusting the vertical positioning.
+% \end{compactlist}
+%
+% Otherwise, we provide the package \textsf{arraycols}~\cite{ARCOL},
+% wich allows a good management of spacings in \texttt{tabular} and \texttt{array} environments,
+% and \textsf{mismath}~\cite{MSMATH} of which several macros tends to improve spacings
+% in mathematical formulas.
+% Let us mention also the \textsf{setspace} package (natively in \LaTeXe),
+% which allows to set the space between the lines of text, and
+% at last \textsf{xspace}~\cite{XSP},
+% which is loaded by \textsf{spacingtricks}: it adds a space unless the macro
+% is followed by certain punctuation characters.
+%
+% \section{Usage}
+%
+% \DescribeMacro{\centered}
+% The "\centered"\marg{text} command yields a centered line without vertical spacing.
+% It acts like "\centerline" except in lists or tables where its behavior is much better
+% (see the following examples).
+% Moreover, the line break before and after the macro is automatic.
+%
+% Here is a comparative example of the centering commands inside a list:
+% \begin{enumerate}
+% \item Here a centered line with "\centered":
+% \centered{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.}
+% \item Here another centered line with "\\ \centerline":\\
+% \centerline{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.}
+% \item Here another centered line with "\par\centerline":
+% \par\centerline{Lorem ipsum dolor sit amet, consectetuer adipiscing elit.}
+% \item Here a centered line with the \texttt{center} environment:
+% \begin{center} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \end{center}
+% \end{enumerate}
+%
+% In tables, "\centered" allows to center a particular cell independently of
+% the (general) column alignment
+% \footnote{In tables, we can also use the powerful \texttt{\bslash makecell} command
+% of the \textsf{makecell} package~\cite{MKCELL}, on the other hand
+% the \texttt{\bslash centerline} command doesn't work at all.
+% Let us also mention the \texttt{\bslash centeredline} command, from the package
+% \textsf{centeredline}~\cite{CENTER}, which allows to use \texttt{\bslash verb}
+% commands inside the text to center; but it doesn't work in tables either.}.
+%
+% \begin{center}
+% \begin{tabular}{|l|r|}
+% \hline
+% left aligned column & right aligned column \\
+% \hline
+% another cell & \centered{centered cell} \\
+% \hline
+% \centered{centered cell} & the last cell right aligned \\
+% \hline
+% \end{tabular}
+% \end{center}
+%
+% \DescribeMacro{\footnote}
+% The "\footnote" command doesn't have a good management of spacing issues,
+% in particular when the \textsf{hyperref} package has been loaded.
+% In English tradition, there is no space before numbers (or symbols) of note calls,
+% and likewise at the beginning of footnotes,
+% text begins immediately after the note number
+% \footnote{The typesetting of footnotes and note calls depends on national typographic
+% rules which are, in principle, managed by \textsf{babel}.
+% For instance, by activating the \texttt{french} option of \textsf{babel},
+% a thin space is added before the note calls, and the new \texttt{\bslash footnote}
+% macro does not alter this behavior.}.
+% To avoid undesirable spaces, we don't have to put some space before
+% or after writing "\footnote{", for instance:
+% \begin{center}
+% "this is a note\footnote{good spacing} which works fine,"
+% \end{center}
+% but sometimes, it is convenient to place the "\footnote" command
+% on a new line. To achieve this, "\footnote" has been redefined to completely eliminate
+% unwanted spaces
+% \footnote{Probably it would have been enough to recommend the use of the \% symbol
+% at the end of line; its effect is to cancel the space produced by a line break,
+% but we do not always think of using it.}.
+%
+% \pagebreak
+% \medskip
+% \noindent\begin{minipage}{5.6cm}
+% \begin{verbatim}
+%This a note
+%\footnote{
+%Bad spacing example.}
+%with the old command.
+% \end{verbatim}
+% \vspace{-4ex} This a note
+% \footnt{
+% Bad spacing example.}
+% with the old command.
+% \end{minipage}
+% \hfill
+% \begin{minipage}{5.6cm}
+% \begin{verbatim}
+%This a note
+%\footnote{
+%Good spacing example.}
+%with the new command.
+% \end{verbatim}
+% \vspace{-4ex} This a note
+% \footnote{ Good spacing example.}
+% with the new command.
+% \end{minipage}
+%
+% \medskip
+% \DescribeMacro{\footnotespace} \DescribeMacro{\footenoteindent}
+% Like the old one, the new "\footnote" command can take an opional argument
+% to force the number of the note.
+% Likewise, we have always the customization macros
+% "\footnotesize", "\footnotesep", "\footnoterule",
+% but two new macros have been added to manage spacings:
+% "\footnotespace" produces the space before the note call symbol
+% and "\footnoteindent" produces the space at the beginning of the footnote text.
+% For instance, with "\renewcommand{\footnotespace}{\,}"
+% and "\renewcommand{\footnoteindent}{\enskip}"
+% \footnote{\texttt{\bslash enskip} is equivalent to \texttt{\bslash hspace\{0.5em\}}.}
+% we get:
+% \renewcommand{\footnotespace}{\,}
+% \renewcommand{\footnoteindent}{\enskip}
+%
+% \begin{center}
+% \begin{minipage}{7cm}
+% This is a note \footnote{en dash spacing at the beginning of the note.}
+% with particular space settings.
+% \end{minipage}
+% \end{center}
+% \renewcommand{\footnotespace}{}
+% \renewcommand{\footnoteindent}{}
+%
+% \DescribeMacro{\vstrut}
+% "\vstrut"\oarg{depth}\marg{height} produces a strut with variable height or depth,
+% in order to increase the line's height (above the base line) or depth
+% (below the base line, optional);
+% this command can be used in a text line, a table, a list, a formula, etc.
+% If the values of \meta{height} and \meta{depth} are inferior to the height and depth
+% of the current line, the command has no effect.
+% Here are some examples.
+%
+% \noindent
+% \begin{minipage}[t]{8cm}
+% \begin{verbatim}
+%\[\frac{\sqrt{0.5p}}{10} =
+%\frac{\sqrt{\vstrut{1.7ex} 0.5p}}{10}\]
+% \end{verbatim}
+% \end{minipage}
+% \hfill
+% \begin{minipage}[t]{6cm}
+% \[\frac{\sqrt{0.5p}}{10} = \frac{\sqrt{\vstrut{1.7ex} 0.5p}}{10}\]
+% \end{minipage}
+% \\
+% "\fbox{\vstrut{2ex}$\sigma(X)=1$}" gives
+% \fbox{\vstrut{2ex}$\sigma(X)=1$}
+% better than \fbox{$\sigma(X)=1$}
+%
+% \medskip
+% \noindent
+% The height adjustment is done by trial and error.
+% We could also have used a vertical phantom box;
+% for example in the previous square root, we get a good result with "\vphantom{\bar{t}}",
+% but it's not obvious to know what to put in the phantom box,
+% moreover, "\vstrut" allows a finer tuning.
+%
+% In a table,
+% "\renewcommand{\arraystretch}"\marg{stretch}
+% allows to increase the height of the rows but this command
+% has a global effect, whereas "\vstrut" allows to adjust properly the height of each row,
+% as in the following table:
+% \[
+% \begin{array}{|c|}
+% \hline
+% \text{bad}\\
+% \hline
+% \displaystyle \lim_{\substack{x \to 1\\x>1}} \ln\left(\dfrac{x^2}{x-1}\right) \\
+% \hline
+% \dfrac{a}{b} \\
+% \hline
+% \displaystyle \int_{1}^{X} \frac{1}{t}\, \mathrm{d}t \\
+% \hline
+% \end{array}
+% \qquad
+% \begin{array}{|c|c|}
+% \hline
+% \multicolumn{2}{|c|}{\text{good}}\\
+% \hline
+% \displaystyle\lim_{\substack{x \to 1\\x>1}} \ln\left(\dfrac{x^2}{x-1}\right)\vstrut{3.8ex}
+% & \mbox{obtained with } "\vstrut{3.8ex}" \\
+% \hline
+% \dfrac{a}{b} \vstrut[2ex]{3ex} & "\vstrut[2ex]{3ex}" \\
+% \hline
+% \displaystyle\int_{1}^{X} \frac{1}{t} \, \mathrm{d} t \vstrut[2.5ex]{4.2ex}
+% & "\vstrut[2.5ex]{4.2ex}" \\
+% \hline
+% \end{array}
+%\]
+% However, for tables, we have the \textsf{arraycols} package~\cite{ARCOL},
+% based on \textsf{cellspace}~\cite{CELLSP}, which allows to adjust
+% row heights automatically. Nevertheless, "\vstrut" can be useful for fine adjustments.
+%
+% In a text line, "\vstrut" can be used in place of "\vspace".
+%
+% \medskip
+% \DescribeMacro{\indent} \DescribeMacro{\parindentlength}
+% The command "\setlength{\parindent}{0cm}" allow to eliminate any indentation of lines
+% at the beginning of every paragraph.
+% But in this case, the "\indent" command does not work anymore
+% if we want exceptional indentation of a particular paragraph.
+% So, the initial length of "\parindent" has been saved in "\parindentlength"
+% and the command "\indent" has been redefined to still allow indentation
+% of length "\parindentlength".
+%
+% \medskip
+% \DescribeEnv{indentblock}
+% The \texttt{indentblock} environment allows indentation of a whole block of lines.
+% It has an optional argument which is the length of indentation
+% (set by default to "\parindentlength").
+% The following lyrics have been indented (and typeset in italic shape) with
+% "\begin{indentblock}\itshape" and stanzas 2 and 4 have been affected by
+% an additional indentation with "\begin{indentblock}[3em]".
+%
+% \begin{indentblock}\itshape
+% Overhead the albatross hangs motionless upon the air \\
+% And deep beneath the rolling waves in labyrinths of coral caves \\
+% The echo of a distant time comes willowing across the sand \\
+% And everything is green and submarine
+% \begin{indentblock}[3em]
+% And no one showed us to the land \\
+% And no one knows the where's or why's \\
+% But something stirs and something tries \\
+% Starts to climb towards the light
+% \end{indentblock}
+% \noindent
+% Strangers passing in the street \\
+% By chance two separate glances meet \\
+% And I am you and what I see is me \\
+% And do I take you by the hand \\
+% And lead you through the land \\
+% And help me understand the best I can?
+% \begin{indentblock}[3em]
+% And no one calls us to move on \\
+% And no one forces down our eyes \\
+% No one speaks and no one tries \\
+% No one flies around the sun
+% \end{indentblock}
+% \end{indentblock}
+%
+% \DescribeEnv{compactlist}
+% As its name tells it, the "compactlist" environment allows to create
+% a \og compact\fg\ list, \ie without vertical space neither above nor between items.
+% As for lists in \LaTeX, items are generated by the "\item" command.
+% The environment has an optional argument: "\begin{compactlist}"\oarg{symbol}.
+%
+% \DescribeMacro{\bul}\DescribeMacro{\dash}\DescribeMacro{\ddash}\DescribeMacro{\aster}
+% \DescribeMacro{\hand}
+% Default item symbol is "\textbullet" but it can be changed.
+% We provide aliases for several symbols commonly used in lists:
+% "\bul" \bul\ (alias for "\textbullet"), "\dash" \dash\ ("\textendash"),
+% "\ddash" \ddash\ ("\textemdash"), "\aster" \aster\ ("\textasteriskcentered"),
+% as well as "\hand" \hand ("\ding{43}"), "\checksymb" \checksymb ("\ding{51}")
+% and "\arrowsymb" \arrowsymb ("\ding{226}")
+% which need to load the \textsf{pifont} package in the preamble.
+% \DescribeMacro{\checksymb}\DescribeMacro{\arrowsymb}
+% The following example is obtained with "\begin{compactlist}[\checksymb]":
+% \begin{compactlist}[\checksymb]
+% \item Fisrt item.
+% \item Second item.
+% \item Third item.
+% \end{compactlist}
+% \hand These aliases can be used directly in text mode, of course.
+% For "\hand", "\checksymb" and "\arrowsymb", the symbol is followed by a space
+% if there is no punctuation character just after it (thanks to the
+% macro \texttt{xspace} from the \textsf{xspace} package~\cite{XSP}).
+%
+% \medskip
+% \DescribeMacro{\ie} \DescribeMacro{\eg}
+% In English, at the end of a sentence, the point is followed by an em space
+% which is larger than an interword space.
+% We provide the "\ie" (\textit{id est}) and "\eg" (\textit{exempli gratia}) macros,
+% suggested in The \LaTeX\ Companion \cite{COMP},
+% to get correct spacing after these abbreviations \eg here.
+% In American typography, a comma is often placed after these abbreviations,
+% what we can get with "\ie,"
+% on the other hand, some authors prefer to typeset \textit{\ie} in italic shape,
+% which is always possible with "\textit{\ie}".
+%
+% \medskip
+% \DescribeMacro{\dualboxes}
+% Several packages intend to set the text around a figure or a table,
+% but in general we have to give the width of the box containing the figure or the table.
+% Let us mention however the \textsf{picins} package~\cite{PICINS},
+% cited in The \LaTeX\ Companion~\cite{COMP}, which do not ask for the box width
+% and it can also be used with lists.
+% Nevertheless vertical positioning can be tricky.
+% For this purpose, we have written the "\dualboxes"\oarg{pos}\marg{left}\marg{right} macro,
+% which places two boxes, \meta{left} and \meta{right}, side by side.
+% These boxes can contain figures, tables, text, \texttt{minipage} environments
+% (for several paragraphs and lists), etc.
+% The optional \meta{pos} parameter sets the vertical level on which the boxes are aligned:
+% a number between 0 (bottom) and 1 (top, default value).
+% Here is a first example with "\dualboxes[0.7]".
+%
+% \medskip
+% \psset{xunit=0.5cm,yunit=1.0cm,algebraic=true}
+% \dualboxes[0.7]{\footnotesize
+% $\begin{array}{|*{7}{c|}} \hline
+% x & -2 & -1 & 0 & 1 & 2 & 3 \\ \hline
+% f(x) & -0.96 & -0.71 & 0 & 0.59 & 0.38 & 0.18 \\ \hline
+% \end{array}$
+% }{
+% \begin{pspicture}(-4.5,-1.5)(4.5,1)
+% \psaxes[labelFontSize=\scriptstyle,ticksize=-2pt,linewidth=0.3pt]
+% {->}(0,0)(-4.5,-1.5)(4.5,1)
+% \psplot[linecolor=red]{-4.5}{4.5}{x/(EXP(x)-x)}
+% \end{pspicture}
+% }
+%
+% \noindent
+% The horizontal space is equally shared between left margin, interbox space and right margin.
+%
+% \medskip
+% In the following example the right box has been shifted back
+% to make an overlaping with the left one, what \textsf{picins} cannot do.
+%
+%\dualboxes{\footnotesize
+% $\begin{array}{|*{7}{c|}} \hline
+% x & -2 & -1 & 0 & 1 & 2 & 3 \\ \hline
+% f(x) & -0.96 & -0.71 & 0 & 0.59 & 0.38 & 0.18 \\ \hline
+% \end{array}$
+% }{\mbox{} \hspace{-3cm}
+% \begin{pspicture}(-4.5,-1.5)(4.5,1)
+% \psaxes[labelFontSize=\scriptstyle,ticksize=-2pt,linewidth=0.3pt]
+% {->}(0,0)(-4.5,-1.5)(4.5,1)
+% \psplot[linecolor=red]{-4.5}{4.5}{x/(EXP(x)-x)}
+% \end{pspicture}
+%}
+% \begin{verbatim}
+% \dualboxes*{\footnotesize
+% $\begin{array}{|*{7}{c|}} \hline
+% x & -2 & -1 & 0 & 1 & 2 & 3 \\ \hline
+% f(x) & -0.96 & -0.71 & 0 & 0.59 & 0.38 & 0.18 \\ \hline
+% \end{array}$
+% }{\mbox{} \hspace{-3cm}
+% \begin{pspicture}(-4.5,-1.5)(4.5,1) % needs the pstricks-add package
+% \psaxes[labelFontSize=\scriptstyle,ticksize=-2pt,linewidth=0.3pt]
+% {->}(0,0)(-4.5,-1.5)(4.5,1)
+% \psplot[linecolor=red]{-4.5}{4.5}{x/(EXP(x)-x)}
+% \end{pspicture}
+% }
+% \end{verbatim}
+%
+% \DescribeMacro{\dualboxes*}
+% This command has a starred version which eliminates spaces at the beginning and at the
+% end of the line, the only remaining space is between the boxes:
+% "\dualboxes*"\oarg{pos}\marg{left}\marg{right}.
+% \dualboxes*{\parbox{7cm}{
+% Here the left part consist of a paragraph box obtained with
+% \texttt{\bslash parbox\{7cm\}\{...\}}.
+% If we want several paragraphs, a list or a mathematical displayed formula,
+% in one of the boxes,
+% then we have to put them in a \texttt{minipage} environment.
+% }}{\begin{pspicture}(-4.5,-1.5)(4.5,1)
+% \psaxes[labelFontSize=\scriptstyle,ticksize=-2pt,linewidth=0.3pt]
+% {->}(0,0)(-4.5,-1.5)(4.5,1)
+% \psplot[linecolor=red]{-4.5}{4.5}{x/(EXP(x)-x)}
+% \end{pspicture}
+% }
+%
+% \noindent
+% Let us indicate that it's unfortunately not possible to use \texttt{verbatim} environments
+% (nor the in-line \texttt{\bslash verb} command)
+% within "\dualboxes" arguments,
+% just as it's not possible for footnotes or margin notes.
+%
+% \section{Implementation}
+% \begin{macrocode}
+\RequirePackage{ifthen}
+\RequirePackage{xspace}
+
+\newcommand*{\centered}[1]{{\setlength{\parskip}{0pt}\par\noindent\hfill
+ #1\hfill\mbox{}\par}}
+% \end{macrocode}
+% The double braces are necessary here to ensure that the "\parskip" modification applies
+% locally within the command and not globally to the rest of the document.
+% \smallskip
+% \begin{macrocode}
+\newcommand{\footnotespace}{}
+\newcommand{\footnoteindent}{}
+\let\footnt\footnote
+\renewcommand{\footnote}[2][]{\unskip\footnotespace%
+ \ifthenelse{\equal{#1}{}}{
+ \unskip\footnt{\footnoteindent\ignorespaces #2}
+ }{
+ \unskip\footnt[#1]{\footnoteindent\ignorespaces #2}
+ }\unskip
+}
+% \end{macrocode}
+% "\unskip" eliminates undesirable spaces before and "\ignorespaces" after.
+% \smallskip
+% \begin{macrocode}
+\newlength{\strutheight}
+\newcommand*{\vstrut}[2][0pt]{%
+ \setlength{\strutheight}{#2}%
+ \addtolength{\strutheight}{#1}%
+ \unskip
+ \ensuremath{\rule[-#1]{0pt}{\strutheight}}%
+ \ignorespaces%
+}
+
+\newlength{\parindentlength}
+\setlength{\parindentlength}{\parindent}
+\renewcommand{\indent}{\hspace{\parindentlength}}
+
+\newenvironment*{indentblock}[1][\parindentlength]{
+ \begin{list}{}{%
+ \setlength{\leftmargin}{#1}
+ \setlength{\itemsep}{0pt}
+ \setlength{\topsep}{1ex}
+ \setlength{\partopsep}{0pt}
+ }
+ \item[]
+ }{\end{list}}
+
+\newenvironment*{compactlist}[1][\textbullet]{
+ \begin{list}{#1\unskip}{% \unskip suppresses the space created by \xspace
+ \setlength{\labelwidth}{1em}
+ %\setlength{\leftmargin}{\labelwidth} % indentation
+ \setlength{\itemsep}{0pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0ex}
+ \setlength{\partopsep}{0pt}
+ }
+ }{\end{list}}
+
+\providecommand{\bul}{\textbullet}
+\providecommand{\dash}{\textendash}
+\providecommand{\ddash}{\textemdash}
+\providecommand{\aster}{\textasteriskcentered}
+% \end{macrocode}
+% The command "\asterisk" already exists in the \textsf{mathabx} package.\\
+% The following macros need the \textsf{pifont} package.
+% \smallskip
+% \begin{macrocode}
+\providecommand{\hand}{\ding{43}\xspace}
+\providecommand{\checksymb}{\ding{51}\xspace}
+\providecommand{\arrowsymb}{\ding{226}\xspace}
+
+\providecommand{\ie}{i.e.\@\xspace}
+\providecommand{\eg}{e.g.\@\xspace}
+
+\newcommand{\@@dualboxes}[3][1]{
+ \par\noindent
+ \raisebox{-#1\height}{#2} \hfill
+ \raisebox{-#1\height}{#3} \smallskip
+ }
+\newcommand{\@dualboxes}[3][1]{
+ \par\noindent \hfill
+ \raisebox{-#1\height}{#2} \hfill
+ \raisebox{-#1\height}{#3} \hfill\mbox{}\smallskip
+ }
+\newcommand{\dualboxes}{\@ifstar{\@@dualboxes}{\@dualboxes}}
+% \end{macrocode}
+%
+% \medskip
+% \begin{thebibliography}{8}
+% \bibitem{XSP} \emph{The \textsf{xspace} package}, David Carlisle, Morten Høgholm,
+% CTAN v1.13 2014/10/28.
+% \bibitem{MKCELL} \emph{The \textsf{makecell} package}, Olga Lapko, CTAN, v0.1e 2009/08/03.
+% \bibitem{CENTER} \emph{\textsf{centeredline} -- A macro for centering lines}, Jean-François
+% Burnol, CTAN, v1.1 2019/05/03.
+% \bibitem{CELLSP} \emph{The \textsf{cellspace} package}, Josselin Noirel, CTAN, v1.8 2019/03/11.
+% \bibitem{ARCOL} \emph{The \textsf{arraycols} package}, Antoine Missier, CTAN, v1.0 2019/06/26.
+% \bibitem{MSMATH} \emph{\textsf{mismath} -- Miscellaneous mathematical macros}, Antoine Missier,
+% CTAN, v1.5 2019/06/22.
+% \bibitem{PICINS} \emph{Bilder in \LaTeX -Dokumenten -- PicIns-Benutzerhandbuch},
+% Joachim Bleser, Edmund Lang, CTAN, v3.0 sept. 1992.
+% \bibitem{COMP} \emph{The \LaTeX\ Companion}. Frank Mittelbach, Michel Goossens,
+% Johannes Braams, David Carlisle, Chris Rowley, 2nd edition, Pearson Education, 2004.
+% \end{thebibliography}
+
+% \Finale
+\endinput