diff options
Diffstat (limited to 'macros')
25 files changed, 773 insertions, 361 deletions
diff --git a/macros/latex/contrib/coolfn/README b/macros/latex/contrib/coolfn/README index 9b6beb43e2..8572f3fb7d 100644 --- a/macros/latex/contrib/coolfn/README +++ b/macros/latex/contrib/coolfn/README @@ -1,15 +1,16 @@ coolfn - a package for cool footnotes -version: 1.0.0 +version: 1.1.0 This package provides formatting for footnotes in long legal documents, using hanging indents to make them look nicer This work may be distributed and/or modified under the conditions of the -LaTeX Project Public License (LPPL), version 1.3 or later. +LaTeX Project Public License (LPPL), version 1.3c or later. For suggestions, feature requests, and bug reports, please use the project's GitHub site: https://github.com/ezgranet/coolfn Version history: +27/02/2023 Update with bottom footnotes 06/10/2022 Package creation
\ No newline at end of file diff --git a/macros/latex/contrib/coolfn/coolfn.sty b/macros/latex/contrib/coolfn/coolfn.sty index af3ee854a2..f8bdc2dffc 100644 --- a/macros/latex/contrib/coolfn/coolfn.sty +++ b/macros/latex/contrib/coolfn/coolfn.sty @@ -1,13 +1,13 @@ -\def\coolfnversionnumber{1.0.0} +\def\coolfnversionnumber{1.1.0} \ProvidesPackage{coolfn} -[2022/10/06\coolfnversionnumber\ +[2023/27/02\coolfnversionnumber\ A cool way to format footnotes] % This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 +% conditions of the LaTeX Project Public License, either version 1.3c % 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 +% and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. @@ -24,6 +24,7 @@ % from https://tex.stackexchange.com/questions/305033/is-there-a-latex-package-that-defines-an-environment-for-parskip-like-capabiliti %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[bottom]{footmisc} \makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex/contrib/coolfn/coolfndocumentation.pdf b/macros/latex/contrib/coolfn/coolfndocumentation.pdf Binary files differindex 768c97fe7d..d273760f60 100644 --- a/macros/latex/contrib/coolfn/coolfndocumentation.pdf +++ b/macros/latex/contrib/coolfn/coolfndocumentation.pdf diff --git a/macros/latex/contrib/coolfn/coolfndocumentation.tex b/macros/latex/contrib/coolfn/coolfndocumentation.tex index 2d72b17ec8..43d3576b25 100644 --- a/macros/latex/contrib/coolfn/coolfndocumentation.tex +++ b/macros/latex/contrib/coolfn/coolfndocumentation.tex @@ -23,7 +23,7 @@ ItalicFont={Palatine Parliamentary Italic} \setmonofont[Scale=.9,BoldFont=Source Code Pro Bold]{Source Code Pro} \usepackage{minted} -\date{6 October 2022\\\smallskip\ttfamily Version \coolfnversionnumber} +\date{\today\\\smallskip\ttfamily Version \coolfnversionnumber} \author{Elijah Z Granet\thanks{e-mail: \href{mailto:ezg21@cantab.ac.uk}{\ttfamily ezg21@cantab.ac.uk}}} \title{\texttt{coolfn}:\\A package for a cool way to typeset footnotes} @@ -59,17 +59,16 @@ breaklines, firstnumber=last ] {latex} - -\def\coolfnversionnumber{1.0.0} +\def\coolfnversionnumber{1.1.0} \ProvidesPackage{coolfn} -[2022/10/06\coolfnversionnumber\ +[2023/27/02\coolfnversionnumber\ A cool way to format footnotes] % This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 +% conditions of the LaTeX Project Public License, either version 1.3c % 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 +% and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. @@ -83,9 +82,11 @@ firstnumber=last %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% -% from https://tex.stackexchange.com/questions/305033/is-there-a-latex-package-that-defines-an-environment-for-parskip-like-capabiliti +% from% +% tex.stackexchange.com/questions/305033/ %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[bottom]{footmisc} \makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -171,7 +172,11 @@ firstnumber=last \section{Version History} -\subsection{\texttt{1.0.0}} +\subsection*{\texttt{1.1.0}} + +\ttfamily 27 February 2023: Fixed issue with footnotes at the bottom + +\subsection*{\texttt{1.0.0}} \ttfamily 6 October 2022: Package creation diff --git a/macros/latex/contrib/listings/README b/macros/latex/contrib/listings/README index 5c4a4f0628..8dfe5a667e 100644 --- a/macros/latex/contrib/listings/README +++ b/macros/latex/contrib/listings/README @@ -3,7 +3,7 @@ Listings package Copyright 1996--2004 Carsten Heinz (the package) Copyright 1996--2007 individual authors (language drivers) Copyright 2006--2007 Brooks Moses (continued maintenance) -Copyright 2013--2020 Jobst Hoffmann (continued maintenance) +Copyright 2013-- Jobst Hoffmann (continued maintenance) Released under the LaTeX Project Public License 1.3c or later diff --git a/macros/latex/contrib/listings/listings-devel.pdf b/macros/latex/contrib/listings/listings-devel.pdf Binary files differindex bece208f87..4febb79f4e 100644 --- a/macros/latex/contrib/listings/listings-devel.pdf +++ b/macros/latex/contrib/listings/listings-devel.pdf diff --git a/macros/latex/contrib/listings/listings.dtx b/macros/latex/contrib/listings/listings.dtx index 1874a17849..c507ab5fc1 100644 --- a/macros/latex/contrib/listings/listings.dtx +++ b/macros/latex/contrib/listings/listings.dtx @@ -133,7 +133,7 @@ % Hoffmann became the maintainer of the \packagename{listings} % package in 2013; see the Preface for details.}~ % % \textless\lstemail\textgreater} -% \date{2020/03/24\enspace\enspace Version 1.8d\ \box\abstractbox} +% \date{2023/02/27\enspace\enspace Version 1.9\ \box\abstractbox} % \def\lstemail{\href{mailto:j.hoffmann@fh-aachen.de}{\texttt{j.hoffmann(at)fh-aachen.de}}} % \ifhyper % \hypersetup{pdftitle=The Listings Package, @@ -921,8 +921,12 @@ % insensitive and that spaces have no effect. % % There is at least one language (VDM, Vienna Development Language, -% \url{http://www.vdmportal.org}) which is not directly supported by the -% \packagename{listings} package. It needs a package for its own: +% \url{https://en.wikipedia.org/wiki/Vienna_Development_Method}^^A +% \footnote{\lsthelper{Vladimir Nikishkin}{2019/11/15}% +% {bug report in the listings package documentation} informed that the +% previous mentioned URL \url{http://www.vdmportal.org} doesn't point +% to a VDM specific page anymore.}) which is not directly supported by +% the \packagename{listings} package. It needs a package for its own: % \packagename{vdmlisting}. On the other hand \packagename{vdmlisting} uses % the \packagename{listings} package and so it should be mentioned in this % context. @@ -938,7 +942,7 @@ % |listings-|\meta{language}|.prf|, \meta{language} is the name of the % supported programming language in lowercase letters. % -% So if an user of the \packagename{listings} package wants to use these +% So if a user of the \packagename{listings} package wants to use these % preferences, she/he can say for example when using Python % \begin{quote} % |\input{listings-python.prf}| @@ -1257,9 +1261,13 @@ % % \paragraph{Captions} % Now we come to \ikeyname{caption} and \ikeyname{label}. You might guess -% (correctly) that they can be used in the same manner as \LaTeX's |\caption| -% and |\label| commands, although here it is also possible to have a caption -% regardless of whether or not the listing is in a float: +% (correctly) that they can be used in the same manner as \LaTeX's +% |\caption| and |\label| commands, although here it is also possible to +% have a caption regardless of whether or not the listing is in a +% float:\footnote{You should keep in mind that according to +% \cite{Mittelbach:companion} \ldots{} if the caption's text fits on one +% line, the text is centered; if the text does not fit on a single line, it +% will be typeset as a paragraph with a width equal to the line width.} % \begin{lstsample}[caption,label]{\lstset{xleftmargin=.05\linewidth}}{} % \begin{lstlisting}[caption={Useless code},label=useless] % for i:=maxint to 0 do @@ -1788,7 +1796,7 @@ % \end{lstsample} % As you can see, you have the choice between specifying the style explicitly % by \LaTeX\ commands or implicitly by other style keys. But, you're right, -% some implicitly defined styles have no seperate keys, for example the second +% some implicitly defined styles have no separate keys, for example the second % order keyword style. Here---and never with the number 1---you just append % the order to the base key: \texttt{keywordstyle2}. % @@ -1985,7 +1993,7 @@ % \lstthanks{Chris~Edwards}{edwch00p@infoscience.otago.ac.nz}, % \lstthanks{David~John~Evans}{Matrix.Software@dial.pipex.com}, % \lstthanks{Tanguy~Fautr\'e}{tfautre@pandora.be}, -% \lstthanks{Ulrike~Fischer}{-}, +% \lstthanks{Ulrike~Fischer}{news3@nililand.de}, % \lstthanks{Robert~Frank}{rf7@ukc.ac.uk}, % \lstthanks{Michael~Franke}{-}, % \lstthanks{Ignacio~Fern\'andez~Galv\'an}{-}, @@ -2337,7 +2345,7 @@ % can be used on individual listings only. They determine the physical % input lines used to print displayed listings. % -% \item[1.2] +% \item[1.2;1.9] % \rkeyname{linerange}|={|\meta{first1}\texttt-\meta{last1}\texttt,^^A % \meta{first2}\texttt-\meta{last2}\texttt, and so % on|}|\label{uoption:linerange} @@ -2346,6 +2354,14 @@ % listing are displayed. The intervals must be sorted and must not % intersect. % +% In fact each part of the triplet \meta{first}\texttt-\meta{last} may +% be omitted. Omitting \meta{first} or \meta{last} means, that the +% range begins at line no. 1 and ends at \meta{last} or begins at +% \meta{first} ends at the last line of the file, a single number +% means, that the range begins and ends at the line given by the +% number, whereas omitting \meta{first} or \meta{last} means the range +% begins at line no. 1 and ends at the last line of the file. +% % \item[1.8, true] % \rkeyname{consecutivenumbers}|=|\meta{\alternative{true,false}}^^A % \syntaxor\rkeyname{consecutivenumbers}\label{uoption:consecutivenumbers} @@ -3590,7 +3606,7 @@ % example, but the examples apply to \keyname{comment} and % \keyname{deletecomment} as well. % -% \item[0.13] \keyname{morecomment}|=[l]|\meta{delimiter} +% \item[0.13] \rkeyname{morecomment}|=[l]|\meta{delimiter} % % The delimiter starts a comment line, which in general starts with the % delimiter and ends at end of line. If the character sequence |//| @@ -3598,7 +3614,7 @@ % |morecomment=[l]//| is the correct declaration. For Matlab it would % be |morecomment=[l]\%|---note the preceding backslash. % -% \item[0.13] \keyname{morecomment}|=[s]|\marg{delimiter}\marg{delimiter} +% \item[0.13] \rkeyname{morecomment}|=[s]|\marg{delimiter}\marg{delimiter} % % Here we have two delimiters. The second ends a comment starting with % the first delimiter. If you require two such comments you can use @@ -3607,14 +3623,14 @@ % |morecomment=[s]{\#}{\#}|, which means that the sharp delimits both % beginning and end of a single comment. % -% \item[0.13] \keyname{morecomment}|=[n]|\marg{delimiter}\marg{delimiter} +% \item[0.13] \rkeyname{morecomment}|=[n]|\marg{delimiter}\marg{delimiter} % % is similar to type |s|, but comments can be nested. Identical % arguments are not allowed---think a while about it! Modula-2 and % Oberon-2 use |morecomment=[n]{(*}{*)}|. % -% \item[0.18] \keyname{morecomment}|=[f]|\meta{delimiter} -% \item[0.18] \keyname{morecomment}|=[f][commentstyle]|\oarg{n=preceding +% \item[0.18] \rkeyname{morecomment}|=[f]|\meta{delimiter} +% \item[0.18] \rkeyname{morecomment}|=[f][commentstyle]|\oarg{n=preceding % columns}\meta{delimiter} % % The delimiter starts a comment line if and only if it appears on a @@ -4487,6 +4503,11 @@ % Robin Fairbairns. % \newblock{The \textsf{moreverb} package}, 2011. % +% \bibitem[Mi04]{Mittelbach:companion} +% Frank Mittelbach, Michel Goossens, Johannes Braams, +% David P. Carlisle, and Chris Rowley. +% \newblock{The \LaTeX-Companion}, 2004. +% % \bibitem[Som11]{Sommerfeldt:captions} % Axel Sommerfeldt. % \newblock{Customizing captions of floating environments}, 2011. @@ -5216,7 +5237,7 @@ % defines the specified character respectively assigns \meta{token}. % The catcode table if not affected. Be careful if your definition has % parameters: it is not safe to read more than one character ahead. -% Moreover, the argument can be \emph{arbitrary}; somtimes it's the next +% Moreover, the argument can be \emph{arbitrary}; sometimes it's the next % source code character, sometimes it's some code of the % \packagename{listings} package, e.g.~|\relax|, |\@empty|, |\else|, % |\fi|, and so on. Therefore don't use \TeX's ord-operator |`| on such @@ -5909,7 +5930,7 @@ % \part{Implementation} % % -% \CheckSum{12394} +% \CheckSum{12388} %^^A %^^A Don't index TeX-primitives. %^^A @@ -6053,8 +6074,8 @@ % All files will have same date and version. % \begin{macrocode} %<*kernel|misc|doc> -\def\filedate{2020/03/24} -\def\fileversion{1.8d} +\def\filedate{2023/02/27} +\def\fileversion{1.9} %</kernel|misc|doc> % \end{macrocode} % What we need and who we are. @@ -8570,10 +8591,19 @@ % % \begin{macro}{\lst@outputspace} % \begin{macro}{\lst@visiblespace} -% The first macro is a default definition, \ldots +% \lsthelper{Denis Bitouz\'e}{2020/09/12}{`lst@visiblespace: +% `verbvisiblespace instead of `textvisiblespace} pointed out, that, +% with Lua\LaTeX{} and some monospaced font which doesn't have an +% appropriate glyph in slot 32, `showspaces' hasn't any effect by using +% |\textvisiblespace|. So now we're using |\verbvisiblespace| as a default +% definition for the first macro, the test for the fontfamily +% |\lst@ttfamily| is deleted, because in most of the cases it lead to +% the (wrong) output of |\char32|. The definition of |\verbvisible| +% from latex.ltx takes the different behaviour of the modern \TeX{} +% engines into account and defines a valid |\verbvisiblespace| % \begin{macrocode} \def\lst@outputspace{\ } -\def\lst@visiblespace{\lst@ttfamily{\char32}\textvisiblespace} +\def\lst@visiblespace{\verbvisiblespace} % \end{macrocode} % \end{macro} % \end{macro} @@ -11876,6 +11906,7 @@ \lst@procnamefalse \fi} % \end{macrocode} +% And these are the two implemented keys: % \begin{macrocode} \lst@Key{procnamestyle}{}{\def\lst@procnamestyle{#1}} \lst@Key{indexprocnames}{false}[t]{\lstKV@SetIf{#1}\lst@ifindexproc} @@ -12622,7 +12653,7 @@ }{\def\lst@firstnumber{#1\relax}}} \lst@AddToHook{PreSet}{\let\lst@advancenumber\z@} % \end{macrocode} -% |\lst@firstnumber| now set to |\lst@lineno| instead of |\lst@firstline|, +% |\lst@firstnumber| is now set to |\lst@lineno| instead of |\lst@firstline|, % as per changes in |lstpatch.sty| from 1.3b pertaining to linerange markers. % \begin{macrocode} \lst@AddToHook{PreInit} @@ -13690,8 +13721,7 @@ % \begin{lstkey}{print} % \begin{lstkey}{firstline} % \begin{lstkey}{lastline} -% \begin{lstkey}{linerange} -% The `current line' counter and three keys. +% The `current line' counter and three option keys. % \begin{macrocode} \newcount\lst@lineno % \global \lst@AddToHook{InitVars}{\global\lst@lineno\@ne} @@ -13701,12 +13731,19 @@ \lst@Key{firstline}\relax{\def\lst@firstline{#1\relax}} \lst@Key{lastline}\relax{\def\lst@lastline{#1\relax}} % \end{macrocode} +% Initialize the linerange with reasonable values % \begin{macrocode} \lst@AddToHook{PreSet} - {\let\lst@firstline\@ne \def\lst@lastline{9999999\relax}} +{% + \def\lst@firstline{1\relax} + \def\lst@lastline{9999999\relax} + \let\lst@linerange\@empty +} % \end{macrocode} % \end{lstkey} -% \end{lstkey}\end{lstkey}\end{lstkey}\end{macro} +% \end{lstkey} +% \end{lstkey} +% \end{macro} % The following code is just copied from the current development version, and % from the |lstpatch.sty| file that Carsten left in version 1.3b for doing % line ranges with numbers and range markers. It uses some more keys: @@ -13724,8 +13761,11 @@ % \begin{macrocode} \lst@Key{linerange}\relax{\lstKV@OptArg[]{#1}{% \def\lst@interrange{##1}\def\lst@linerange{##2,}}} +\lst@Key{consecutivenumbers}{true}[t]{% + \lstKV@SetIf{#1}\lst@ifconsecutivenumbers} % \end{macrocode} -% +% The next options are needed for an easy description of arbitrary linerange +% markers: % \begin{macrocode} \lst@Key{rangeprefix}\relax{\def\lst@rangebeginprefix{#1}% \def\lst@rangeendprefix{#1}} @@ -13735,67 +13775,127 @@ \lst@Key{rangebeginsuffix}{}{\def\lst@rangebeginsuffix{#1}} \lst@Key{rangeendprefix}{}{\def\lst@rangeendprefix{#1}} \lst@Key{rangeendsuffix}{}{\def\lst@rangeendsuffix{#1}} -\lst@Key{includerangemarker}{true}[t]{\lstKV@SetIf{#1}\lst@ifincluderangemarker} -\lst@AddToHook{PreSet}{\def\lst@firstline{1\relax}% - \let\lst@linerange\@empty} +\lst@Key{includerangemarker}{true}[t]{\lstKV@SetIf{#1}% + \lst@ifincluderangemarker} +% \end{macrocode} +% The line range is known---it is set either explicitly (by numbers or by +% arbitrary linerange markers) or implicitly from the default values (1 and +% 999999). |\lst@GetLineInterval| parses the known line range recursively, +% because there may be a comma separated list of pairs. +% \begin{macrocode} \lst@AddToHook{Init} - {\ifx\lst@linerange\@empty - \edef\lst@linerange{{\lst@firstline}-{\lst@lastline},}% - \fi% - \lst@GetLineInterval}% +{% + \ifx\lst@linerange\@empty + \edef\lst@linerange{{\lst@firstline}-{\lst@lastline},}% + \fi% + \lst@GetLineInterval% +}% \def\lst@GetLineInterval{\expandafter\lst@GLI\lst@linerange\@nil} -\def\lst@GLI#1,#2\@nil{\def\lst@linerange{#2}\lst@GLI@#1--\@nil} +% \end{macrocode} +% Splitting the comma separated list of pairs is done by +% \begin{macrocode} +\def\lst@GLI#1,#2\@nil{% +% \end{macrocode} +% The list is split into two parts: the first element (\#1) of the list and +% the rest of the list (\#2) which is stored in |\lst@linerange| to be +% processed later. +% \begin{macrocode} + \def\lst@linerange{#2}\lst@GLI@#1--\@nil% +} +% \end{macrocode} +% Further parsing is done by |lst@GLI@|, the argument is |#1--\@nil| that +% is the first element of the list augmented by a sentinel. This +% argument is parsed with the template |#1-#2-#3\@nil|. A linerange given +% as e.\,g. `|12-21|' leads to the argument |12-21--\@nil|, so it is parsed +% as \#1\(\leftarrow\) |12|, \#2\(\leftarrow\)|21|, and \#3\(\leftarrow\)|-|. +% \begin{macrocode} \def\lst@GLI@#1-#2-#3\@nil{% - \lst@IfNumber{#1}% - {\ifx\@empty#1\@empty - \let\lst@firstline\@ne - \else - \def\lst@firstline{#1\relax}% - \fi - \ifx\@empty#3\@empty - \def\lst@lastline{9999999\relax}% - \else - \ifx\@empty#2\@empty - \let\lst@lastline\lst@firstline - \else - \def\lst@lastline{#2\relax}% - \fi - \fi}% % \end{macrocode} -% If we've found a general marker, we set firstline and lastline to 9999999. -% This prevents (almost) anything from being printed for now. +% First we test, if the linerange starts with a number (consisting of -, 1, +% 2, 3, \ldots) or an arbitrary linerange marker. If a linerange starts +% erroneously with a `|-|' character, the argument \#1 isn't set and so the +% range starts with 1, so giving a perhaps expected result, but the +% definition of a linerange must always consist at least of the three parts +% \meta{first}, `|-|', and \meta{last}. +% \begin{macrocode} + \lst@IfNumber{#1}% + {% + \ifx\@empty#1\@empty + \let\lst@firstline\@ne + \else + \def\lst@firstline{#1\relax}% + \fi +% \end{macrocode} +% Now we know the starting number of the linerange. \#3 isn't set with a +% linerange consisting of a single number, in all other cases \#2 defines +% the last line (explicitly or implicitly). +% \begin{macrocode} + \ifx\@empty#3\@empty% + \def\lst@lastline{9999999\relax}% + \ifx\@empty#2\@empty + \let\lst@lastline\lst@firstline% + \fi + \else% + \ifx\@empty#2\@empty + \def\lst@lastline{9999999\relax} + \else % doesn't happen(?) + \def\lst@lastline{#2\relax}% + \fi + \fi + }% +% \end{macrocode} +% If we've found an arbitrary linerange marker, we set firstline and lastline to +% 9999999. This prevents (almost) anything from being printed for now. % \begin{macrocode} - {\def\lst@firstline{9999999\relax}% - \let\lst@lastline\lst@firstline + {% + \def\lst@firstline{9999999\relax}% + \let\lst@lastline\lst@firstline % \end{macrocode} % We add the prefixes and suffixes to the markers. % \begin{macrocode} - \let\lst@rangebegin\lst@rangebeginprefix - \lst@AddTo\lst@rangebegin{#1}\lst@Extend\lst@rangebegin\lst@rangebeginsuffix - \ifx\@empty#3\@empty - \let\lst@rangeend\lst@rangeendprefix - \lst@AddTo\lst@rangeend{#1}\lst@Extend\lst@rangeend\lst@rangeendsuffix - \else - \ifx\@empty#2\@empty - \let\lst@rangeend\@empty - \else - \let\lst@rangeend\lst@rangeendprefix - \lst@AddTo\lst@rangeend{#2}\lst@Extend\lst@rangeend\lst@rangeendsuffix - \fi - \fi + \let\lst@rangebegin\lst@rangebeginprefix + \lst@AddTo\lst@rangebegin{#1}% + \lst@Extend\lst@rangebegin\lst@rangebeginsuffix + \ifx\@empty#3\@empty + \let\lst@rangeend\lst@rangeendprefix + \lst@AddTo\lst@rangeend{#1} + \lst@Extend\lst@rangeend\lst@rangeendsuffix + \else + \ifx\@empty#2\@empty + \let\lst@rangeend\@empty + \else + \let\lst@rangeend\lst@rangeendprefix + \lst@AddTo\lst@rangeend{#2}% + \lst@Extend\lst@rangeend\lst@rangeendsuffix + \fi + \fi % \end{macrocode} % The following definition will be executed in the % \hookname{SelectCharTable} hook and here right now if we are already % processing a listing. % \begin{macrocode} - \global\def\lst@DefRange{\expandafter\lst@CArgX\lst@rangebegin\relax\lst@DefRangeB}% - \ifnum\lst@mode=\lst@Pmode \expandafter\lst@DefRange \fi}} + \global\def\lst@DefRange{% + \expandafter\lst@CArgX\lst@rangebegin\relax\lst@DefRangeB}% + \ifnum\lst@mode=\lst@Pmode \expandafter\lst@DefRange \fi% + }% +} % \end{macrocode} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% \end{lstkey} +% +% \begin{macro}{\lst@DefRange} % |\lst@DefRange| is not inserted via a hook anymore. Instead it is now called % directly from |\lst@SelectCharTable|. This was necessary to get rid of an % interference with the escape-to-LaTeX-feature. The bug was reported by % \lsthelper{Michael~Bachmann}{2004/07/21}{Keine label-Referenzierung -% m\"oglich...}. Another chance is due to the same bug: |\lst@DefRange| is +% m\"oglich...}. Another change is due to the same bug: |\lst@DefRange| is % redefined globally when the begin of code is found, see below. The bug was % reported by \lsthelper{Tobias~Rapp}{2004/04/06}{undetected end of range if % listing crosses page break} and \lsthelper{Markus~Luisser}{2004/08/13}{Bug mit @@ -13803,9 +13903,6 @@ % \begin{macrocode} \lst@AddToHookExe{DeInit}{\global\let\lst@DefRange\@empty} % \end{macrocode} -% \end{lstkey}\end{lstkey}\end{lstkey} -% \end{lstkey}\end{lstkey}\end{lstkey} -% \end{lstkey}\end{lstkey}\end{lstkey} % % Actually defining the marker (via |\lst@GLI@|, |\lst@DefRange|, % |\lst@CArgX| as seen above) is similar to |\lst@DefDelimB|---except that @@ -13830,6 +13927,7 @@ \lst@CArgEmpty}% \@empty} % \end{macrocode} +% \end{macro} % % Modify labels and define |\lst@InitLstNumber| used above according to an % error reported by @@ -13896,11 +13994,31 @@ \fi} % \end{macrocode} % +% Sometimes it is good to have two or more excerpts of one program numbered +% consecutively, i.\,e. 1--11 instead of 3--5, 12--17, 20--21. So we +% introduce |\lst@DisplayConsecutiveNumbersOrNot|, which corrects the +% displayed line numbers to be always equal to the input line numbers +% \begin{macrocode} +\def\lst@DisplayConsecutiveNumbersOrNot{% + \lst@ifconsecutivenumbers\else% + \c@lstnumber=\numexpr-1+\lst@lineno + \fi% +} +% \end{macrocode} +% % Eventually we shouldn't forget to install |\lst@OnceAtEOL|, which must % also be called in |\lst@MSkipToFirst|. % \begin{macrocode} \lst@AddToHook{EOL}{\lst@OnceAtEOL\global\let\lst@OnceAtEOL\@empty} \gdef\lst@OnceAtEOL{}% Init +% \end{macrocode} +% The following code was introduced in listings version 1.4. The code +% resembles the lines 14031--14061 of version 1.3c, but contains loops: +% \newline|\def\lst@next{...}\expandafter\lst@next|.\newline +% In fact that code will never be expanded, because there are two analoguous +% definitions in section \ref{iTheInputCommand} below, so they override +% these two commands. +% \begin{macrocode} \def\lst@MSkipToFirst{% \global\advance\lst@lineno\@ne \ifnum \lst@lineno=\lst@firstline @@ -13959,10 +14077,13 @@ % Some keys and \ldots % \begin{macrocode} \lst@Key{captionpos}{t}{\def\lst@captionpos{#1}} -\lst@Key{abovecaptionskip}\smallskipamount{\def\lst@abovecaption{#1}} -\lst@Key{belowcaptionskip}\smallskipamount{\def\lst@belowcaption{#1}} +\lst@Key{abovecaptionskip}\smallskipamount{% + \def\lst@abovecaption{#1}} +\lst@Key{belowcaptionskip}\smallskipamount{% + \def\lst@belowcaption{#1}} % \end{macrocode} -% \lsthelper{Rolf~Niepraschk}{2000/01/10}{key: title} proposed \keyname{title}. +% \lsthelper{Rolf~Niepraschk}{2000/01/10}{key: title} proposed +% \keyname{title}. % \begin{macrocode} \lst@Key{label}\relax{\def\lst@label{#1}} \lst@Key{title}\relax{\def\lst@title{#1}\let\lst@caption\relax} @@ -14009,7 +14130,8 @@ \lst@UserCommand\lstlistingnamestyle{} % \end{macrocode} % \begin{macrocode} -\lst@Key{numberbychapter}{true}[t]{\lstKV@SetIf{#1}\lst@ifnumberbychapter} +\lst@Key{numberbychapter}{true}[t]{% + \lstKV@SetIf{#1}\lst@ifnumberbychapter} % \end{macrocode} % \end{lstkey} % \end{macro} @@ -14030,19 +14152,20 @@ % titles. The first is to separate the definitions of the skip registers and % |\@makecaption|. % \begin{macrocode} -\@ifundefined{abovecaptionskip} -{\newskip\abovecaptionskip - \newskip\belowcaptionskip}{} -\@ifundefined{@makecaption} -{\long\def\@makecaption#1#2{% - \vskip\abovecaptionskip - \sbox\@tempboxa{#1: #2}% - \ifdim \wd\@tempboxa >\hsize - #1: #2\par - \else - \global \@minipagefalse - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% - \fi +\@ifundefined{abovecaptionskip}{% + \newskip\abovecaptionskip% + \newskip\belowcaptionskip% +}{} +\@ifundefined{@makecaption}{% + \long\def\@makecaption#1#2{% + \vskip\abovecaptionskip% + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + #1: #2\par% + \else% + \global \@minipagefalse% + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi% \vskip\belowcaptionskip}% }{} % \end{macrocode} @@ -14050,13 +14173,14 @@ % replacement text was used directly in |\lst@MakeCaption|. A |\noindent| has % been moved elsewhere and became |\@parboxrestore| after a bug report from % \lsthelper{Frank~Mittelbach}{2004/02/13}{Re: Info: Inkompatibilit\"at -% zwischen caption und listings}. \lsthelper{Karl Berry}{bold "listings -% 1"?} asked for the ability of customizing the label. So +% zwischen caption und listings}. \lsthelper{Karl Berry}{2019/08/18}{bold +% "listings 1"?} asked for the ability of customizing the label. So % |\lstlistingnamestyle| was introduced in front of |\lstlistingname|. % \begin{macrocode} \def\fnum@lstlisting{% {\lstlistingnamestyle\lstlistingname - \ifx\lst@@caption\@empty\else~\thelstlisting\fi}}% + \ifx\lst@@caption\@empty\else~\thelstlisting\fi}% +} % \end{macrocode} % Captions are set only for display style listings -- thanks to % \lsthelper{Peter~L\"offler}{2004/04/24}{pdfTeX warning (dest): name{figure.1} @@ -14070,7 +14194,7 @@ % \begin{macrocode} \def\lst@MakeCaption#1{% \lst@ifdisplaystyle - \ifx #1t% + \ifx #1t \allowbreak% \ifx\lst@@caption\@empty\expandafter\lst@HRefStepCounter \else \expandafter\refstepcounter \fi {lstlisting}% @@ -14098,8 +14222,8 @@ \addcontentsline{lol}{lstlisting}% {\protect\numberline{\thelstlisting}\lst@@caption}% \fi - \fi - \fi + \fi + \fi % \end{macrocode} % We make a caption if and only if the caption is not empty and the user % requested a caption at |#1| $\in\{\mathtt t,\mathtt b\}$. To disallow @@ -14121,9 +14245,10 @@ \def\vskip{\afterassignment\lst@vskip \@tempskipa}% \def\lst@vskip{\nobreak\@@vskip\@tempskipa\nobreak}% \par\@parboxrestore\normalsize\normalfont % \noindent (AS) - \ifx #1t\allowbreak \fi + %%\ifx #1t\allowbreak \fi \ifx\lst@title\@empty - \lst@makecaption\fnum@lstlisting{\ignorespaces \lst@caption} + \lst@makecaption\fnum@lstlisting{% + \ignorespaces \lst@caption} \else \lst@maketitle\lst@title % (AS) \fi @@ -14836,7 +14961,8 @@ % |\lst@ShortInlineOldCatcode\|\meta{c}. % \begin{macrocode} \expandafter - \xdef\csname lst@ShortInlineOldCatcode\string#1\endcsname{\the\catcode`#1}% + \xdef\csname lst@ShortInlineOldCatcode\string#1\endcsname{% + \the\catcode`#1}% % \end{macrocode} % The character is spliced into the definition using the same trick as % used in |\verb| (for instance), having activated |~| in a group. @@ -14850,7 +14976,8 @@ % \begin{macrocode} \global\expandafter\let \csname lst@ShortInlineOldMeaning\string#1\endcsname~% - \expandafter\gdef\expandafter~\expandafter{\lst@shortinlinedef#1}}% + \expandafter\gdef\expandafter~\expandafter{% + \lst@shortinlinedef#1}}% \endgroup % \end{macrocode} % Finally the character is made active. @@ -14873,7 +15000,8 @@ % \begin{macro}{\lstDeleteShortInline} % \begin{macrocode} \def\lstDeleteShortInline#1{% - \expandafter\ifx\csname lst@ShortInlineOldCatcode\string#1\endcsname\relax + \expandafter\ifx% + \csname lst@ShortInlineOldCatcode\string#1\endcsname\relax% \PackageError{Listings}% {#1 is not a short reference for \string\lstinline}% {Use \string\lstMakeShortInline first.}% @@ -15103,15 +15231,6 @@ % We just look whether to drop more lines or to leave the mode which restores % the definition of chr(13) and chr(10). % \begin{macrocode} - \lst@Key{consecutivenumbers}{true}[t]{\lstKV@SetIf{#1}\lst@ifconsecutivenumbers} - \def\lst@DisplayConsecutiveNumbersOrNot{% - \lst@ifconsecutivenumbers\typeout{consecutive:}\else% - \typeout{non-consecutive:} - \c@lstnumber=\numexpr-1+\lst@lineno %\relax % this enforces the - %displayed line numbers to always be the - %input line numbers - \fi% -} \def\lst@MSkipToFirst{% \global\advance\lst@lineno\@ne \ifnum \lst@lineno=\lst@firstline @@ -15875,23 +15994,22 @@ % \end{macrocode} % % \paragraph{Indexing} -% The `user' commands. |\rstyle| is defined below. +% The `user' commands. There are two different ways to mark up a +% key. |\ikeyname| is the commmand for keys which are used \textit{i}nline, +% |\rkeyname| defines the \textit{r}eference of a key---displayed green---, +% |\rstyle| is defined below. % \begin{macrocode} \newcommand\ikeyname[1]{% \lstkeyindex{#1}{}% \lstaspectindex{#1}{}% \keyname{#1}} -\newcommand\ekeyname[1]{% - \@bsphack - \lstkeyindex{#1}{}% - \lstaspectindex{#1}{}% - \@esphack} \newcommand\rkeyname[1]{% \@bsphack \lstkeyindex{#1}{}% \lstaspectindex{#1}{}% \@esphack{\rstyle\keyname{#1}}} % \end{macrocode} +% The same rules apply to |\icmdname| and |\rcmdname|: % \begin{macrocode} \newcommand\icmdname[1]{% \@bsphack @@ -15950,6 +16068,7 @@ \fi}} % \end{macrocode} % +% % \paragraph{Unique styles} % \begin{macrocode} \newcommand*\lst{\texttt{lst}} @@ -15972,7 +16091,8 @@ \else\fontfamily#1\fi \selectfont} % \end{macrocode} -% The color mainly for keys and commands in the reference guide. +% The color mainly for keys and commands in the reference +% guide---\textit{r} means reference. % \begin{macrocode} \ifcolor \definecolor{darkgreen}{rgb}{0,0.5,0} @@ -16948,8 +17068,13 @@ \lst@UseHook{SetStyle}\lst@UseHook{EmptyStyle} \lst@UseHook{SetLanguage}\lst@UseHook{EmptyLanguage} % \end{macrocode} -% Finally we load the configuration files. +% Finally we load the configuration files. \lsthelper{Ulrike~Fischer}{2020/11/13} +% {.cfg-file is read with wrong catcode} pointed out that this must happen +% with the correct catcode. At the moment the catcode of |^^M| is 9, which +% is wrong. So we reset the catcodes to the correct values before loading +% the files: % \begin{macrocode} +\lst@RestoreCatcodes% \InputIfFileExists{listings.cfg}{}{} \InputIfFileExists{lstlocal.cfg}{}{} %<info>\lst@ReportAllocs @@ -17059,16 +17184,26 @@ % \item[1.5] 2013/06/27 % \item new maintainership % \item[1.6] 2015/05/05 -% \item add discussion about using |\lstinline|\oarg{key=value list}\marg{source code}. +% \item add discussion about using |\lstinline|\oarg{key=value list}\marg{source code} % \item add section ``Bugs and workarounds''. % \item[1.7] 2018/09/02 -% \item some new or updated language definitions. -% \item several error corrections. +% \item some new or updated language definitions +% \item several error corrections % \item[1.8] from 2019/02/27 on -% \item corrected and activated the option |inputpath|. -% \item some new or updated language definitions. -% \item several error corrections. -% \item introduced |\lstlistingnamestyle|. +% \item corrected and activated the option |inputpath| +% \item some new or updated language definitions +% \item several error corrections +% \item introduced |\lstlistingnamestyle| +% \item[1.9] from 2023/02/27 on +% \item hopefully corrected the long outstanding wrong behaviour of +% displaying visible spaces +% \item generalized the use of |linerange| +% \item introduced key |consecutivenumbers| +% \item a pagebreak between a (top) caption and source code isn't allowed +% anymore +% \item the configuration files |listings.cfg| and |lstlocal.cfg| are read +% with the correct catcode +% \item some documentation and layout enhancements. % \end{itemize} % \endgroup % diff --git a/macros/latex/contrib/listings/listings.pdf b/macros/latex/contrib/listings/listings.pdf Binary files differindex 4d827f4980..bf8ad68ce9 100644 --- a/macros/latex/contrib/listings/listings.pdf +++ b/macros/latex/contrib/listings/listings.pdf diff --git a/macros/latex/contrib/listings/lstdrvrs.dtx b/macros/latex/contrib/listings/lstdrvrs.dtx index f710ef02ae..1d2f4cc5a2 100644 --- a/macros/latex/contrib/listings/lstdrvrs.dtx +++ b/macros/latex/contrib/listings/lstdrvrs.dtx @@ -33,7 +33,7 @@ % \title{Language, Style and Format drivers\\ for \textsf{Listings}\\ % {\large by Carsten Heinz and individual authors:}} % \author{\InputIfFileExists{lstdrvrs.tmp}{}{}} -% \date{2020/03/24\enspace\enspace Version 1.8d\ \box\abstractbox} +% \date{2023/02/27\enspace\enspace Version 1.9\ \box\abstractbox} % % \ifhyper % \hypersetup{pdftitle={Language, Style and Format drivers for the @@ -137,7 +137,7 @@ % \endgroup % We mainly define default dialects. % \begin{macrocode} -\ProvidesFile{listings.cfg}[2020/03/24 1.8d listings configuration] +\ProvidesFile{listings.cfg}[2023/02/27 1.9 listings configuration] \def\lstlanguagefiles {lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty} \lstset{defaultdialect=[R/3 6.10]ABAP, @@ -184,7 +184,7 @@ %<+hansl-prf>\ProvidesFile{listings-hansl.prf} %<+lua-prf>\ProvidesFile{listings-lua.prf} %<+python-prf>\ProvidesFile{listings-python.prf} -%<-config> [2020/03/24 1.8d listings language file] +%<-config> [2023/02/27 1.9 listings language file] % \end{macrocode} % % @@ -1724,7 +1724,30 @@ % \begin{macrocode} %<*lang1> % \end{macrocode} -% The current version of Fortran (Fortran 2008) is defined by ISO/IEC +% The current version of Fortran (Fortran 2018) is defined by ISO/IEC +% 1539-1:2018, for a deeper insight have a look at +% \url{https://wg5-fortran.org/f2018.html}. It contains ? new keywords, ? +% of them consisting of +% two words: ^^A +% |FAIL IMAGE|, so +% the list of keywords contains the single parts |FAIL| and |IMAGE|. +% So there is the following definition of Fortran 2018 keywords +% \begin{macrocode} +\lst@definelanguage[18]{Fortran}[08]{Fortran}{% + morekeywords={FAIL, IMAGE, NON_RECURSIVE},% +% \end{macrocode} +% and procedures: +% \begin{macrocode} + morekeywords=[3]{GET_TEAM, TEAM_NUMBER, IMAGE_TEAMS, NUM_IMAGES, + THIS_IMAGE, FAILED_IMAGES, STOPPED_IMAGES, IMAGES_STATUS, CO_BROADCAST, + CO_MAX, CO_MIN, CO_SUM, CO_REDUCE, ATOMIC_ADD, ATOMIC_AND, ATOMIC_OR, + ATOMIC_XOR, ATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR, + ATOMIC_FETCH_XOR, ATOMIC_FETCH_CAS, IEEE_GET_MODES, IEEE_SET_MODES, + IEEE_FMA, IEEE_SIGNBIT, IEEE_INT, IEEE_REM, IEEE_MAX_NUM, IEEE_MAX_NUM_MAG, IEEE_MIN_NUM, IEEE_MAX_NUM_MAG, IEEE_NEXT_DOWN, IEEE_NEXT_UP, IEEE_SUPPORT_DATATYPE, IEEE_QUIET_EQ, IEEE_QUIET_GE, IEEE_QUIET_GT, IEEE_QUIET_LE, IEEE_QUIET_LT, IEEE_QUIET_NE, IEEE_SIGNALING_EQ, IEEE_SIGNALING_GE, IEEE_SIGNALING_GT, IEEE_SIGNALING_LE, IEEE_SIGNALING_LT, IEEE_SIGNALING_NE}% +}% +% \end{macrocode} +% +% The Fortran 2008 version is defined by ISO/IEC % 1539-1:2010. It contains nine new keywords, four of them consisting of % two words: ^^A % |ERROR STOP|, |SYNC ALL|, |SYNC IMAGES|, |SYNC MEMORY|, so @@ -1733,7 +1756,7 @@ % \begin{macrocode} \lst@definelanguage[08]{Fortran}[03]{Fortran}{% morekeywords={ALL, BLOCK, CODIMENSION, CONCURRENT, CONTIGUOUS, CRITICAL,% - ERROR, LOCK, SUBMODULE, SYNC, UNLOCK},% + ERROR, IMAGES, LOCK, MEMORY, SUBMODULE, SYNC, UNLOCK},% % \end{macrocode} % New procedures in Fortran 2008: % \begin{macrocode} @@ -1781,8 +1804,8 @@ morekeywords={ALLOCATABLE, ALLOCATE, ASSIGNMENT, CASE, CONTAINS, CYCLE,% DEALLOCATE, DEFAULT, EXIT, INCLUDE, IN, NONE, OUT, INTENT, INTERFACE,% MODULE, NAMELIST, NULLIFY, ONLY, OPERATOR, OPTIONAL, OUT, POINTER,% - PRIVATE, PUBLIC, RECURSIVE, RESULT, SELECT, SEQUENCE, TARGET, USE,% - WHERE, WHILE, BLOCKDATA, DOUBLEPRECISION, ENDBLOCKDATA, ENDFILE,% + PRIVATE, PUBLIC, RECURSIVE, RESULT, SELECT, SEQUENCE, TARGET, TYPE,% + USE, WHERE, WHILE, BLOCKDATA, DOUBLEPRECISION, ENDBLOCKDATA, ENDFILE,% ENDFUNCTION, ENDINTERFACE, ENDMODULE, ENDPROGRAM, ENDSELECT,% ENDSUBROUTINE, ENDTYPE, ENDWHERE, INOUT, SELECTCASE,% % \end{macrocode} @@ -1835,8 +1858,8 @@ morecomment=[l]!% FILE, FORMAT, FUNCTION, GO, TO, GOTO, IF, IMPLICIT, % INQUIRE, INTEGER, INTRINSIC, LOGICAL, % OPEN, PARAMETER, PAUSE, PRECISION, PRINT, PROGRAM, READ, REAL, % - RETURN, REWIND, STOP, SUBROUTINE, THEN, % - WRITE, SAVE},% + RETURN, REWIND, SAVE, STOP, SUBROUTINE, THEN, % + WRITE},% morekeywords=[2]{ACCESS, BLANK, BLOCK, DIRECT, EOF, ERR, EXIST,% FMT, FORM, FORMATTED, IOSTAT, NAMED, NEXTREC, NUMBER, OPENED,% REC, RECL, SEQUENTIAL, STATUS, TYPE, UNFORMATTED, UNIT},% @@ -3703,7 +3726,7 @@ morecomment=[l]!% % % \subsection{Matlab} % -% I took the keywords from \texttt{http://www.utexas.edu/math/Matlab/Manual}, +% I (C.\,H.?) took the keywords from \texttt{http://www.utexas.edu/math/Matlab/Manual}, % but I removed the keywords |i|, |j| and |tmp|---the change was proposed by % \lsthelper{Kai Below}{below@tu-harburg.de}{1998/09/21}{Matlab: keywords % i,j,tmp removed}. @@ -3711,6 +3734,11 @@ morecomment=[l]!% % \begin{macrocode} %<*lang1> % \end{macrocode} +% From the revision history one can conclude that ``Matlab´´ means ``Matlab +% 5.1´´ which was released in 1997 +% \begin{macrocode} +\lst@definelanguage[5.1]{Matlab}[]{Matlab}{} +% \end{macrocode} % \begin{macrocode} \lst@definelanguage{Matlab}% {morekeywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,% diff --git a/macros/latex/contrib/listings/lstdrvrs.pdf b/macros/latex/contrib/listings/lstdrvrs.pdf Binary files differindex baac9f4b03..2bf416063a 100644 --- a/macros/latex/contrib/listings/lstdrvrs.pdf +++ b/macros/latex/contrib/listings/lstdrvrs.pdf diff --git a/macros/latex/contrib/photobook/LICENSE b/macros/latex/contrib/photobook/LICENSE index d28638300d..b6912847b4 100644 --- a/macros/latex/contrib/photobook/LICENSE +++ b/macros/latex/contrib/photobook/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2021, Alex A. Naanou +Copyright (c) 2021-2023, Alex A. Naanou All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/macros/latex/contrib/photobook/README.md b/macros/latex/contrib/photobook/README.md index 8a1aea8caa..e2fd880008 100644 --- a/macros/latex/contrib/photobook/README.md +++ b/macros/latex/contrib/photobook/README.md @@ -51,7 +51,7 @@ For more info on `make` targets see the: [./Makefile](./Makefile) [BSD 3-Clause License](./LICENSE) -Copyright (c) 2021-2022, Alex A. Naanou, +Copyright (c) 2021-2023, Alex A. Naanou, All rights reserved. diff --git a/macros/latex/contrib/photobook/photobook.cls b/macros/latex/contrib/photobook/photobook.cls index 4fb5c623ae..06f00aa4bb 100644 --- a/macros/latex/contrib/photobook/photobook.cls +++ b/macros/latex/contrib/photobook/photobook.cls @@ -44,6 +44,8 @@ % XXX see where we need to \ignorespaces... % XXX might be a good idea to add a spine calculator... % XXX might be fun to add a 'box' layout to build book boxes... +% XXX add a grid cell / image cell (???) +% make it trivial to define AxB cell layouts and fill them (fully/partially) % XXX manual / book: % - basic usage % - setup @@ -58,8 +60,8 @@ %%% NOTE: \def\<module-name>@[A-Z]+ macros will be visible to both the %%% code and the generated docs... -\edef\photobook@FILEVERSION{v0.1.6} -\edef\photobook@FILEDATE{2023-01-17} +\edef\photobook@FILEVERSION{v0.1.7} +\edef\photobook@FILEDATE{2023-02-27} %% \documentclass{ltxdoc} @@ -601,6 +603,8 @@ \RequirePackage{trimclip} %% \href{https://ctan.org/pkg/xcolor}{xcolor}, \RequirePackage{xcolor} +%% \href{https://ctan.org/pkg/pagecolor}{pagecolor}, +\RequirePackage{pagecolor} %% \href{https://ctan.org/pkg/colorspace}{colorspace}, \RequirePackage{colorspace} %% \href{https://ctan.org/pkg/graphicx}{graphicx}, @@ -1133,6 +1137,13 @@ paperwidth=\bleedblockwidth, paperheight=\bleedblockheight, ]{geometry} +% colors... +% +% This prevents \pagecolor from getting drawn over other elements... +\pagecolor{white} +\pagecolor{none} +\color{black} + % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - % pre-document... @@ -2435,6 +2446,9 @@ \begin{minipage}[t][\cellheight][#2]{\cellwidth}% \begin{\photobook@captioncell@align}% \ignorespaces% + % XXX BUG: for some reason the text here will not line-break... + % putting it in a minipage here does nothing while the same + % minipage on the lient size fixes the issue... #3% \end{\photobook@captioncell@align}% \end{minipage} diff --git a/macros/latex/contrib/photobook/photobook.pdf b/macros/latex/contrib/photobook/photobook.pdf Binary files differindex 5772d347a9..1380393835 100644 --- a/macros/latex/contrib/photobook/photobook.pdf +++ b/macros/latex/contrib/photobook/photobook.pdf diff --git a/macros/latex/contrib/spacingtricks/README.md b/macros/latex/contrib/spacingtricks/README.md index 1d79082e9b..80f4d30c68 100644 --- a/macros/latex/contrib/spacingtricks/README.md +++ b/macros/latex/contrib/spacingtricks/README.md @@ -3,15 +3,18 @@ ## Presentation -This package provides macros for dealing with some spacing issues e.g. - centering a single line, making a variable strut, indenting a block, typesetting a compact list, - placing two boxes side by side with vertical adjustment. +This package provides macros for dealing with some spacing issues, e.g. +- centering a single line, +- making a variable strut, +- indenting a block, +- typesetting a compact list, +- placing two boxes side by side with vertical adjustment. ## Installation - run LaTeX on spacingtricks.ins, you get the file spacingtricks.sty, -- if then you run LaTeX + dvips + ps2pdf on spacingtricks.dtx you get the file spacingtricks.pdf which is also in the archive, +- if then you run pdfLaTeX on spacingtricks.dtx you get the file spacingtricks.pdf which is also in the archive, - put the files spacingtricks.sty and spacingtricks.pdf in your TeX Directory Structure. diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.dtx b/macros/latex/contrib/spacingtricks/spacingtricks.dtx index d9ff9bc46d..68a4afbdd9 100644 --- a/macros/latex/contrib/spacingtricks/spacingtricks.dtx +++ b/macros/latex/contrib/spacingtricks/spacingtricks.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2021 by Antoine Missier <antoine.missier@ac-toulouse.fr> +% Copyright (C) 2019-2023 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 @@ -20,26 +20,30 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{spacingtricks} - [2021/09/20 v1.4 .dtx spacingtricks file] + [2023/02/27 v1.5 .dtx spacingtricks file] %</package> %<*driver> \documentclass{ltxdoc} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} -\usepackage[french,english]{babel} -\usepackage{lmodern} -\usepackage{spacingtricks} -\usepackage{pifont} +\usepackage[english]{babel} +\usepackage{mathptmx} +\usepackage[pifont]{spacingtricks} \usepackage{amsmath} -\usepackage{pstricks-add} +\usepackage{tikz} +\usepackage{sectsty} +\usepackage{xcolor} + +\definecolor{darkbrown}{rgb}{0.5,0.1,0.1} +\allsectionsfont{\color{darkbrown}} \DisableCrossrefs %\CodelineIndex %\RecordChanges \usepackage{hyperref} \hypersetup{% colorlinks, - linkcolor=blue, - citecolor=blue, + linkcolor=blue, %red by default + citecolor=red, %green by default pdftitle={spacingtricks}, pdfsubject={LaTeX package}, pdfauthor={Antoine Missier} @@ -54,7 +58,7 @@ %</driver> % \fi % -% \CheckSum{165} +% \CheckSum{242} % % \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 @@ -74,59 +78,91 @@ % % % \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/05/04}{dtx and ins files, adding the footnote command} % \changes{v1.0}{2019/06/16}{English translation of the documentation} -% \changes{v1.1}{2019/09/06}{No automatic line breaking at the end of the centered command, -% new length compactitemlist} -% \changes{v1.2}{2019/09/09}{A bug correction in the last update} -% \changes{v1.3}{2020/11/02}{Loading the setspace package, -% small changes in compactlist environment, improvement in dualboxes macro} -% \changes{v1.4}{2021/09/21}{A mistake in the documentation is now corrected} +% +% \changes{v1.1}{2019/09/06}{ +% - No automatic line breaking at the end of the centered command, +% - new length compactitemlist} +% +% \changes{v1.2}{2019/09/09}{ +% - A bug correction in the last update} +% +% \changes{v1.3}{2020/11/02}{ +% - Loading the setspace package, +% - small changes in compactlist environment, +% - improvement in dualboxes macro} +% +% \changes{v1.4}{2021/09/21}{ +% - A mistake in the documentation is now corrected} +% +% \changes{v1.5}{2023/02/23}{ +% - Changing font to times (with the mathptmx package), +% - changing pstricks figure to tikz to avoid double compilation, +% - tests and comments about wrapfig and picinpar packages} +% \changes{v1.5}{2023/02/25}{ +% - adding the centeredline package, +% - adding the pifont package as option, +% - taking over the juxtapose environment from Christian Obrecht, +% - topsep of indentblock environment reduced to zero} +% \changes{v1.5}{2023/02/26}{ +% - Tests and comments about paracol and reledpar packages} % % \GetFileInfo{spacingtricks.sty} % -% \title{The \texttt{spacingtricks} package\thanks{This document +% \title{The \textsf{spacingtricks} package\thanks{This document % corresponds to \textsf{spacingtricks}~\fileversion, dated \filedate.}} % \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}} -% \date{September 20, 2021} +% \date{February 27, 2023} % \maketitle % % \section{Introduction} % % This package offers 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 spacing; -% \item "\vstrut" produces a strut with variable height or depth; -% \item "\indent" has been redefined to indent a line at the beginning +% \item \hyperlink{centered}{\texttt{\bslash centered}} yields good horizontal +% centering without vertical spacing; +% \item \hyperlink{footnote}{\texttt{\bslash footnote}} has been redefined +% to avoid unsuitable spacing; +% \item \hyperlink{vstrut}{\texttt{\bslash vstrut}} produces a strut +% with variable height or depth; +% \item \hyperlink{indent}{\texttt{\bslash 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: +% \item the \hyperlink{indentblock}{\texttt{indentblock}} environment +% produces indentation of all its content; +% \item the \hyperlink{compactlist}{\texttt{compactlist}} environment +% yields a compact list, without vertical spacing between the items, like here; +% several \hyperlink{aliases}{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 spacing; -% \item the "\dualboxes" command attends to place two boxes -% (figures, tables, text) side by side by adjusting the vertical positioning. +% \item common abbreviations \hyperlink{ie-eg}{\ie and \eg} +% are typeset by the macros "\ie" and "\eg" with correct spacing; +% \item the \hyperlink{dualboxes}{\texttt{\bslash dualboxes}} command attends to place +% two boxes (figures, tables, text) side by side by adjusting the vertical positioning. % \end{compactlist} % % \medskip -% Two other common packages are loaded by \textsf{spacingtricks}: -% \textsf{setspace} (natively in \LaTeXe), -% for setting line spacing in a piece of text -% (with the \texttt{spacing} environment), and +% Three other ``spacing'' packages are loaded by \textsf{spacingtricks}: +% \hyperlink{setspace}{\textsf{setspace}}~\cite{SETSP} (natively in \LaTeXe), +% for setting line spacing in a piece of text, % \textsf{xspace}~\cite{XSP}, which adds an inter-word space unless the macro -% is followed by a punctuation character. -% -% Otherwise, we provide the package \textsf{arraycols}~\cite{ARCOL}, -% which allows a good management of spacing in \texttt{tabular} -% and \texttt{array} environments, -% and \textsf{mismath}~\cite{MSMATH} of which several macros tends to improve spacing +% is followed by a punctuation character, +% and \hyperlink{centeredline}{\textsf{centeredline}}~\cite{CENTER} +% which gives an interesting alternative +% to our "\centered" macro (see further). +% We also took over the fine \hyperlink{juxtapose}{\texttt{juxtapose}} environment +% from the \textsf{mafr}~\cite{MAFR} +% distribution, as another way to place boxes side by side. +% +% Otherwise, we have develop the package \textsf{arraycols}~\cite{ARCOL}, +% that allows a good management of spacing in \texttt{tabular} +% or \texttt{array} environments, +% and \textsf{mismath}~\cite{MSMATH} that provides several macros to improve spacing % in mathematical formulas. % % \section{Usage} % +% \hypertarget{centered}{} % \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 @@ -145,27 +181,65 @@ % \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 +% After "\centered{...}", the end of line must be explicit, +% otherwise "\centered" will not work. You can use "\\", +% which is equivalent to "\linebreak", or +% a blank line to begin a new paragraph (equivalent to "\par"). +% In the former case, no vertical space +% is added after the centered line, in the latter case, the vertical space +% following the centered line is a bit larger. +% In the example above, the centered line comes to the end, without line breaking, +% because of the next "\item" command, and the vertical space is set by the +% \texttt{enumerate} environment. +% +% \medskip +% In tables, "\centered" allows to center a particular line in a cell independently of +% the 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 for a single line in a cell. -% 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.}. +% of the \textsf{makecell} package~\cite{MKCELL}; on the other hand, +% neither \texttt{\bslash centerline} nor \texttt{\bslash centering} commands +% do work for a single line in a cell.}, +% here with "\begin{tabular}{|l|r|}": % % \begin{center} % \begin{tabular}{|l|r|} % \hline % left aligned column & right aligned column \\ % \hline -% another cell & \centered{centered cell} \\ +% the second cell fixes the width & \centered{centered cell} \\ % \hline -% \centered{centered line} & the last cell right aligned \\ +% \centered{centered cell} & the last cell fixes the width \\ % \hline % \end{tabular} % \end{center} % +% \medskip +% \hypertarget{centeredline}{} +% \DescribeMacro{\centeredline} +% A limitation of our "\centered" macro is that it doesn't allow to use \texttt{\bslash verb} +% commands inside its argument. For this purpose, you get +% the "\centeredline" command, from the package +% \textsf{centeredline} by Jean-François Burnol~\cite{CENTER}. +% This small package is now loaded by \textsf{spacingtricks}. +% Another advantage of "\centeredline" is that it does not require an explicit +% end, the text can follow the command on the same line, and the line break will +% be automatic. +% Nevertheless, it doesn't work in tables (like in the example above), +% except with \texttt{p} column declaration. +% +% \hypertarget{setspace}{} +% \medskip +% \DescribeEnv{onehalfspace}\DescribeEnv{doublespace}\DescribeEnv{spacing} +% \begin{onehalfspace} +% The \textsf{setspace} package~\cite{SETSP}, loaded by \textsf{spacingtricks}, provides +% environments for changing the spacing between lines. The present paragraph is nested +% in a \texttt{onhalfspace} environment as you can see. +% The \texttt{spacing} environment can be used to get other interline spacing, \eg +% "\begin{spacing}{2.5}". +% \end{onehalfspace} +% +% \hypertarget{footnote}{} +% \medskip % \DescribeMacro{\footnote} % The "\footnote" command doesn't have a good management of spacing issues, % in particular when the \textsf{hyperref} package has been loaded. @@ -189,31 +263,31 @@ % 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 +%This is a note %\footnote{ -%Bad spacing example.} -%with the old command. +%The old command.} +%with bad spacing. % \end{verbatim} % \vspace{-4ex} This a note % \footnt{ -% Bad spacing example.} -% with the old command. +% The old command.} +% with bad spacing. % \end{minipage} % \hfill % \begin{minipage}{5.6cm} % \begin{verbatim} -%This a note +%This is a note %\footnote{ -%Good spacing example.} -%with the new command. +%The new command.} +%with good spacing. % \end{verbatim} % \vspace{-4ex} This a note -% \footnote{ Good spacing example.} -% with the new command. +% \footnote{ +% The new command.} +% with good spacing. % \end{minipage} % % \medskip @@ -225,7 +299,7 @@ % but two new macros have been added to manage spacing: % "\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}{\,}" +% For instance, with "\renewcommand{\footnotespace}{\,}" \\ % and "\renewcommand{\footnoteindent}{\enskip}" % \footnote{\texttt{\bslash enskip} is equivalent to \texttt{\bslash hspace\{0.5em\}}.} % we get: @@ -241,6 +315,7 @@ % \renewcommand{\footnotespace}{} % \renewcommand{\footnoteindent}{} % +% \hypertarget{vstrut}{} % \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 @@ -264,7 +339,7 @@ % \\ % "\fbox{\vstrut{2ex}$\sigma(X)=1$}" gives % \fbox{\vstrut{2ex}$\sigma(X)=1$} -% better than \fbox{$\sigma(X)=1$} +% better than \fbox{$\sigma(X)=1$}. % % \medskip % \noindent @@ -312,16 +387,19 @@ % % In a text line, "\vstrut" can be used in place of "\vspace". % +% \hypertarget{indent}{} % \medskip -% \DescribeMacro{\indent} \DescribeMacro{\parindentlength} +% \DescribeMacro{\indent} % 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" +% \DescribeMacro{\parindentlength} % and the command "\indent" has been redefined to still allow indentation % of length "\parindentlength". % +% \hypertarget{indentblock}{} % \medskip % \DescribeEnv{indentblock} % The \texttt{indentblock} environment allows indentation of a whole block of lines. @@ -331,6 +409,7 @@ % "\begin{indentblock}\itshape" and stanzas 2 and 4 have been affected by % an additional indentation with "\begin{indentblock}[3em]". % +% \smallskip % \begin{indentblock}\itshape % Overhead the albatross hangs motionless upon the air \\ % And deep beneath the rolling waves in labyrinths of coral caves \\ @@ -357,41 +436,64 @@ % \end{indentblock} % \end{indentblock} % +% \hypertarget{compactlist}{} % \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. +% a ``compact'' 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}. % +% \hypertarget{aliases}{} +% \medskip % \DescribeMacro{\bul}\DescribeMacro{\dash}\DescribeMacro{\ddash}\DescribeMacro{\aster} -% \DescribeMacro{\hand} -% Default item symbol is "\textbullet" but it can be changed. +% The default item symbol is "\textbullet", but 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]": +% "\bul" \bul\ (alias for "\textbullet"), "\dash" \dash\ (alias for "\textendash"), +% "\ddash" \ddash\ (alias for "\textemdash"), +% "\aster" \aster\ ("alias for \textasteriskcentered"). +% +% \smallskip +% \DescribeEnv{[pifont]} +% \DescribeMacro{\hand}\DescribeMacro{\checksymb}\DescribeMacro{\arrowsymb} +% Some other common symbols can be found in the \textsf{pifont} package~\cite{PIFONT}. +% Therefore \textsf{spacingtricks} has a \texttt{pifont} option, +% that loads this package and creates the appropriate aliases: +% "\hand" \hand for "\ding{43}", "\checksymb" \checksymb for "\ding{51}" +% and "\arrowsymb" \arrowsymb for "\ding{226}". +% +% \medskip \noindent +% The following example is produced by "\begin{compactlist}[\checksymb]": % \begin{compactlist}[\checksymb] % \item First item. % \item Second item. % \item Third item. % \end{compactlist} -% \hand These aliases can be used directly in text mode, of course. +% \hand These aliases can also 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 +% \smallskip % \DescribeMacro{\compactlistindent} -% This length (fixed at 0.5\,em by default) can be modified with "\setlength" to increase -% or decrease the indentation of the \texttt{compactlist} environment. +% Indentation length is set by "\compactlistindent" (fixed at 0.5\,em by default) +% and can be modified with "\setlength". % Notice that there are several other ways to construct a compact list in particular % with the \texttt{noitemsep} key of the \textsf{enumitem} package~\cite{ENUM}. % % \medskip +% \DescribeEnv{dinglist} +% The \textsf{pifont} package has also a list environment "\begin{dinglist}"\marg{number} +% to typeset a list with normal spacing, using the "\ding"\marg{number} symbol +% for each "\item" (instead of using "\item[\ding"\marg{number}"]"). +% So "\begin{dinglist}{226}" yields: +% \begin{dinglist}{51} +% \item The first item in the list. +% \item The second item in the list. +% \item The third item in the list. +% \end{dinglist} +% +% \hypertarget{ie-eg}{} +% \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 inter-word space. @@ -403,105 +505,197 @@ % on the other hand, some authors prefer to typeset \textit{\ie} in italic shape, % which is always possible with "\textit{\ie}". % +% \hypertarget{dualboxes}{} % \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, +% Several packages intend to typeset text around a figure or a table, +% but some of them need to give the width of the box containing the figure or the table. +% We provide here another approach with the macro +% "\dualboxes"\oarg{pos}\marg{left}\marg{right}, % which places two boxes, \meta{left} and \meta{right}, side by side. -% These boxes can contain figures, tables, text, \texttt{minipage} environments +% These boxes can contain figures, tables, one small line text, +% parbox 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.65]". +% +% Here is a first example in which we have adjusted the postion +% of the boxes vertically, with "\dualboxes[0.6]". +% +% \def\myfigure{% +% \begin{tikzpicture}[scale=0.6]\tiny +% \draw[->] (-4.5,0) -- (4.5,0); +% \draw[->] (0,-2) -- (0,1.5); +% \foreach \x in {-4,...,4} {\draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\x$};} +% \foreach \y in {-1,1} {\draw (0.1cm,\y) -- (-0.1cm,\y) node[left] {$\y$};} +% \draw[domain=-4.5:4.5,samples=100,color=red] plot ({\x},{2*\x/(exp(\x)-\x)}); +% \end{tikzpicture}} +% +% \def\mytable{ +% $\begin{array}{|*{6}{c|}} \hline +% x & -2 & -1 & 0 & 1 & 2 \\ \hline +% f(x) & -1,87 & -1,46 & 0 & 1,16 & 0,74 \\ \hline +% \end{array}$ +% } % % \medskip -% \psset{xunit=0.5cm,yunit=1.0cm,algebraic=true} -% \dualboxes[0.65]{\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} -% } +% \dualboxes[0.6]{\scriptsize \mytable}{\myfigure} % % \noindent -% The horizontal space is equally shared between left margin, inter-box space and right margin. +% The horizontal space is equally shared between left margin, inter-box space +% and right margin. % % \medskip -% In the following example the right box has been shifted back +% In the following example boxes are aligned by top and +% the right box has been shifted back (left) from 3\,cm % to make an overlapping 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} -%} +% \dualboxes{\scriptsize \mytable}{\mbox{} \hspace{-3cm} \myfigure} % \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}$ +% \dualboxes{\scriptsize +% $\begin{array}{|*{6}{c|}} \hline +% x & -2 & -1 & 0 & 1 & 2 \\ \hline +% f(x) & -1,87 & -1,46 & 0 & 1,16 & 0,74 \\ \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} +% \begin{tikzpicture}[scale=0.6]\tiny +% \draw[->] (-4.5,0) -- (4.5,0); +% \draw[->] (0,-2) -- (0,1.5); +% \foreach \x in {-4,...,4} { +% \draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\x$};} +% \foreach \y in {-1,1} { +% \draw (0.1cm,\y) -- (-0.1cm,\y) node[left] {$\y$};} +% \draw[domain=-4.5:4.5,samples=100,color=red] +% plot ({\x},{2*\x/(exp(\x)-\x)}); +% \end{tikzpicture} % } % \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: +% This command has a starred version that eliminates space before the first box +% and after the second one, but not between them: % "\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 +% \smallskip +% \dualboxes*[0.6]{\parbox{6.5cm}{ +% In practice, \texttt{\bslash dualboxes} is suitable for boxes in which +% you put figures or tables or small one line text. +% For longer text, this one must be nested in a paragraph box, \eg +% here we used \texttt{\bslash parbox\{6.5cm\}\{...\}}. +% If you want several paragraphs, a list or a mathematical displayed formula, +% then you have to put them in a \texttt{minipage} environment.} +% }{\myfigure} +% +% \medskip +% Let us indicate that it is 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. +% as well as it is not possible for footnotes or margin notes. +% +% \medskip +% For putting two figures side by side, or a table and a figure, "\dualboxes" is perfect. +% But for text around a figure, some other package may be more efficient. +% Les us mention first \textsf{wrapfig}~\cite{WRAPFIG}, one of the easiest, but text must +% contain in a single paragraph (like above), without list or you have to place it in +% a \texttt{minipage} environment. +% +% More sophisticated is the \textsf{picins} package~\cite{PICINS}, +% cited in The \LaTeX\ Companion~\cite{COMP}. +% Unlike most others, it can be used with lists, +% nevertheless vertical positioning can be tricky +% and it doesn't belong to common distributions \TeX{}\,Live or MiK\TeX. +% A last one we mention is \textsf{picinpar}~\cite{PICINPAR} in which +% text can begin after the first line and can flow to the two side of the figure. +% +% \hypertarget{juxtapose}{} +% \medskip +% \DescribeEnv{juxtapose} +% As a very interesting alternative, we present the powerful \texttt{juxtapose} environment, +% written by Christian Obrecht in the \texttt{fiche.cls class} file, +% which is part of the \textsf{mafr} distribution~\cite{MAFR}. +% We made small improvements, among others to work correctly with lists and +% get customization of some lengths: +% \DescribeMacro{\juxtopskip}\DescribeMacro{\juxbottomskip} +% \DescribeMacro{\juxsepspace} +% top and bottom lengths are set by default to "\smallskipamount" +% and separation space is set to 1.5\,em. +% For spacing above or below the environment, if the default length doesn't fit well, +% you can add a "\bigskip" or a "\vspace"\marg{dimen} for example, +% or at worst redefine the length "\juxtopskip" and "\juxbottomskip". +% \begin{juxtapose} +% In this example the environment begins here. +% \texttt{juxtapose} can deal with figures, tables, but also: +% \begin{compactlist} +% \item verbatim text: "\mytestmacro", +% \item text with several paragraphs, +% \item lists, like here (a compact list), +% \item displayed mathematics as shown on the right side, +% \end{compactlist} +% without the need of \texttt{multipage} environments. + +% The two boxes are aligned by their center, but +% unlike "\dualboxes", you cannot adjust vertical positioning. +% +% \otherside +% \myfigure +% \[ f(x) = \frac{2x}{\mathrm{e}^x-x} \] +% This is the last line of the environment. +% \end{juxtapose} +% +% Here begins the following text. The syntax of \texttt{juxtapose} is simple: +% \begin{center} +% "\begin{juxtapose} ... \otherside ... \end{juxtapose}" +% \end{center} +% It has an optional argument "\begin{juxtapose}"\oarg{leftratio} +% where \meta{leftratio} is the width ratio of the left side relatively to "\textwidth" +% (the default value is "0.5" which means "0.5\textwidth"). +% +% Paragraphs are indented inside each side, except the first one, +% because for a figure, there's no need to shift it to the right +% (from indent length) and otherwise the user may forgot to +% put "\noindent" before the figure. +% If you still want to indent the first paragraph use "\indent". +% For horizontal alignment inside one side, you can use "\centering" or "\flushright" +% (useful for a figure). +% If you want a global indentation of the first (or the second) box, you +% can put it in an \texttt{indentblock} environment, it works fine! +% +% \medskip +% One may ask why not using multi column environments instead. +% In the classic \textsf{multicol} environment you cannot choose unbalanced +% columns and you cannot choose where to pass to the other column. +% +% Some nice packages improve \textsf{multicols}, \eg \textsf{vwcol}~\cite{VWCOL} in which +% you can fix on the columns width, but unfortunately it doesn't accept +% verbatim text, and doesn't manage correctly lists and figures like above. +% +% Let us mention \textsf{paracol}~\cite{PARA} and \textsf{reledpar}~\cite{RELP}, +% which are intended to typeset two column of text in parallel, +% useful for translation or critical edition of text. +% They work fine with lists, figures, verbatim text, and also footnotes and margin notes, +% but it is not immediate to obtain just a chosen vertical positioning of two boxes. +% They have synchronization mechanisms, convenient for text, but +% not when you place two figures side by side. +% Besides they are a bit oversized for our need. They don't have the same purpose. +% So we can hope \texttt{juxtapose} or "\dualboxes" are useful. % % \StopEventually{} % % \section{Implementation} % \begin{macrocode} +\newif\ifspacingtricks@pifont +\DeclareOption{pifont}{\spacingtricks@pifonttrue} +\ProcessOptions \relax + \RequirePackage{ifthen} \RequirePackage{calc} \RequirePackage{setspace} \RequirePackage{xspace} +\RequirePackage{centeredline} +\ifspacingtricks@pifont \RequirePackage{pifont} \fi \newcommand*{\centered}[1]{{\setlength{\parskip}{0pt}\par\noindent\hfill - #1\hfill\mbox{}}} + #1\hfill\mbox{}}} % \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. @@ -536,29 +730,29 @@ \newenvironment*{indentblock}[1][\parindentlength]{ \begin{list}{}{% - \setlength{\leftmargin}{#1} - \setlength{\itemsep}{0pt} - \setlength{\topsep}{1ex} - \setlength{\partopsep}{0pt} - } - \item[] - }{\end{list}} + \setlength{\leftmargin}{#1} + \setlength{\itemsep}{0pt} + \setlength{\topsep}{0pt} % previously 1ex + \setlength{\partopsep}{0pt} + } + \item[] +}{\end{list}} \newlength{\compactlistindent} \setlength{\compactlistindent}{0.5em} \newenvironment*{compactlist}[1][\textbullet]{ \par % sometimes necessary - \begin{list}{#1\unskip}{% \unskip suppresses the space created by \xspace - \setlength{\itemsep}{0pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0ex} - \setlength{\partopsep}{0pt} - \setlength{\labelwidth}{1em} - \setlength{\leftmargin}{\labelwidth} - \addtolength{\leftmargin}{\labelsep} - \addtolength{\leftmargin}{\compactlistindent} - } - }{\end{list}} + \begin{list}{#1\unskip}{% \unskip gobbles space created by \xspace + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0ex} + \setlength{\partopsep}{0pt} + \setlength{\labelwidth}{1em} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \addtolength{\leftmargin}{\compactlistindent} + } +}{\end{list}} \providecommand{\bul}{\textbullet} \providecommand{\dash}{\textendash} @@ -569,16 +763,18 @@ % 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} +\ifspacingtricks@pifont + \providecommand{\hand}{\ding{43}\xspace} + \providecommand{\checksymb}{\ding{51}\xspace} + \providecommand{\arrowsymb}{\ding{226}\xspace} +\fi \providecommand{\ie}{i.e.\@\xspace} \providecommand{\eg}{e.g.\@\xspace} \newcommand{\@@dualboxes}[3][1]{ \par\noindent - \raisebox{\depth-#1\totalheight}{#2} \hfill + \raisebox{\depth-#1\totalheight}{#2} \hfill % needs calc \raisebox{\depth-#1\totalheight}{#3} \smallskip } \newcommand{\@dualboxes}[3][1]{ @@ -587,26 +783,81 @@ \raisebox{\depth-#1\totalheight}{#3} \hfill\mbox{}\smallskip } \newcommand{\dualboxes}{\@ifstar{\@@dualboxes}{\@dualboxes}} + +% \end{macrocode} +% +% The following macro has been found in the \texttt{fiche.cls} file, +% distributed with the \textsf{mafr} package by Christian Obrecht~\cite{MAFR}. +% It had some tiny bugs in spacing. +% I just made small changes: adding some lengths parameters and the "\linewidth" +% instruction (without whom, lists in the first side send the second side out of the page). +% \begin{macrocode} +\newlength\juxtopskip +\setlength\juxtopskip{\smallskipamount} +\newlength\juxbottomskip +\setlength\juxbottomskip{\smallskipamount} +\newlength\juxsepspace +\setlength\juxsepspace{1.5em} +\newlength\side@width + +\newenvironment{juxtapose}[1][0.5]{% left side ratio + \def\otherside{\egroup % internal function remembers \side@width + \@tempdima=\side@width + \side@width=\textwidth + \advance\side@width by -\@tempdima + \advance\side@width by -\juxsepspace + \hskip\juxsepspace + \linewidth=\side@width % for lists environments + \vcenter\bgroup\hsize=\side@width\noindent % \ignorespaces useless + } + \side@width=#1\textwidth + \advance\side@width by -0.5\juxsepspace + \linewidth=\side@width % for lists environments + \par\vskip\juxtopskip% + \hbox\bgroup\begin{math} + \vcenter\bgroup\hsize=\side@width\noindent\ignorespaces + }{\egroup\end{math}\egroup\vskip\juxbottomskip} + % \end{macrocode} % % \medskip -% \begin{thebibliography}{9} +% \begin{thebibliography}{17} +% \begin{raggedright} +% \bibitem{SETSP} \emph{The \textsf{setspace} Package}, Robin Fairbairns, Geoffrey Tobin, +% CTAN, v9.7b 2022/12/04. % \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. +% Burnol, CTAN, v1.2 2022/10/10. +% \bibitem{MAFR} \emph{La distribution \textsf{mafr}}, Christian Obrecht, +% CTAN, v1.0 17/09/2006. +% \bibitem{ARCOL} \emph{The \textsf{arraycols} package}, Antoine Missier, CTAN, +% v1.2 2021/09/20. +% \bibitem{MSMATH} \emph{\textsf{mismath} -- Miscellaneous mathematical macros}, +% Antoine Missier, CTAN, v2.5 2023/02/24. +% \bibitem{MKCELL} \emph{The \textsf{makecell} package}, Olga Lapko, CTAN, v0.1e 2009/08/03. +% \bibitem{CELLSP} \emph{The \textsf{cellspace} package}, Josselin Noirel, CTAN, +% v1.9.0 2022/01/04. +% \bibitem{PIFONT} \emph{\textsf{pifont} -- Using common PostScript fonts with \LaTeX}, +% Walter Schmidt, CTAN, v9.3 2020/03/25. % \bibitem{ENUM} \emph{Customizing lists with the \textsf{enumitem} package}, Javier Bezos, % CTAN, v3.9 2019/06/20. -% \bibitem{ARCOL} \emph{The \textsf{arraycols} package}, Antoine Missier, CTAN, v1.2 2021/09/20. -% \bibitem{MSMATH} \emph{\textsf{mismath} -- Miscellaneous mathematical macros}, Antoine Missier, -% CTAN, v1.8 2020/11/15. +% \bibitem{WRAPFIG} \emph{The \textsf{wrapfig} package}, Donald Arseneau, CTAN, +% v3.6 2003/01/31. % \bibitem{PICINS} \emph{Bilder in \LaTeX -Dokumenten -- PicIns-Benutzerhandbuch}, % Joachim Bleser, Edmund Lang, CTAN, v3.0 sept. 1992. +% \bibitem{PICINPAR} \emph{The \textsf{picinpar} package}, Friedhelm Sowa, Stefan Blochwitz, +% CTAN, v1.3 2022/11/25. +% \bibitem{VWCOL} \emph{The \textsf{vwcol} package}, Will Robertson, CTAN, v0.2 2015/02/10. +% \bibitem{PARA} \emph{Package \textsf{paracol}: Yet Another Multi-Column Package +% to Typeset Columns in Parallel}, Hiroshi Nakashima, CTAN, v1.35 2018/12/31. +% \bibitem{RELP} \emph{Parallel typesetting for critical editions: +% the \textsf{reledpar} package}, Maïeul Rouquette, Peter Wilson, Herries Press, CTAN, +% 2.25.3 2022/04/22. % \bibitem{COMP} \emph{The \LaTeX\ Companion}. Frank Mittelbach, Michel Goossens, % Johannes Braams, David Carlisle, Chris Rowley, 2nd edition, Pearson Education, 2004. +% \end{raggedright} % \end{thebibliography} - +% % \Finale \endinput diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.ins b/macros/latex/contrib/spacingtricks/spacingtricks.ins index fb950279c3..a2b2aa9776 100644 --- a/macros/latex/contrib/spacingtricks/spacingtricks.ins +++ b/macros/latex/contrib/spacingtricks/spacingtricks.ins @@ -1,5 +1,5 @@ %% -%% Copyright (C) 2019-2021 by Antoine Missier <antoine.missier@ac-toulouse.fr> +%% Copyright (C) 2019-2023 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 @@ -21,7 +21,7 @@ This is a generated file. -Copyright (C) 2019-2021 by Antoine Missier <antoine.missier@ac-toulouse.fr> +Copyright (C) 2019-2023 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 @@ -46,7 +46,7 @@ and version 1.3 or later is part of all distributions of LaTeX version \Msg{* spacingtricks.sty *} \Msg{* *} \Msg{* To produce the documentation run the file *} -\Msg{* spacingtricks.dtx through LaTeX + dvips + ps2pdf *} +\Msg{* spacingtricks.dtx through LaTeX *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.pdf b/macros/latex/contrib/spacingtricks/spacingtricks.pdf Binary files differindex a7ab69f54e..ba4d8631b8 100644 --- a/macros/latex/contrib/spacingtricks/spacingtricks.pdf +++ b/macros/latex/contrib/spacingtricks/spacingtricks.pdf diff --git a/macros/latex/contrib/unicode-alphabets/README.md b/macros/latex/contrib/unicode-alphabets/README.md index 347049456b..7796c6b201 100644 --- a/macros/latex/contrib/unicode-alphabets/README.md +++ b/macros/latex/contrib/unicode-alphabets/README.md @@ -7,7 +7,7 @@ See [unicode-alphabets.pdf](docs/unicode-alphabets.pdf) for the documentation. See [specimen.pdf](docs/specimen.pdf) for examples. -Contents last updated 2020-03-11. +Contents last updated 2023-02-27. Package available via CTAN at https://www.ctan.org/pkg/unicode-alphabets diff --git a/macros/latex/contrib/unicode-alphabets/docs/specimen.pdf b/macros/latex/contrib/unicode-alphabets/docs/specimen.pdf Binary files differindex e9c191c990..2d9feb131c 100644 --- a/macros/latex/contrib/unicode-alphabets/docs/specimen.pdf +++ b/macros/latex/contrib/unicode-alphabets/docs/specimen.pdf diff --git a/macros/latex/contrib/unicode-alphabets/docs/specimen.tex b/macros/latex/contrib/unicode-alphabets/docs/specimen.tex index 3f52b09cd2..00c781dbec 100644 --- a/macros/latex/contrib/unicode-alphabets/docs/specimen.tex +++ b/macros/latex/contrib/unicode-alphabets/docs/specimen.tex @@ -15,8 +15,6 @@ hidelinks, ]{hyperref} -\include{csvsimple.tmp.patch} - \title{Unicode Alphabets for \LaTeX\\\bigskip\large Specimen} \author{Mikkel Eide Eriksen} diff --git a/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.pdf b/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.pdf Binary files differindex 29907ed86e..07157b96bd 100644 --- a/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.pdf +++ b/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.pdf diff --git a/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.tex b/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.tex index 3969d13260..3bca58af21 100644 --- a/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.tex +++ b/macros/latex/contrib/unicode-alphabets/docs/unicode-alphabets.tex @@ -20,8 +20,6 @@ hidelinks, ]{hyperref} -\include{csvsimple.tmp.patch} - \title{Unicode Alphabets for \LaTeX} \author{Mikkel Eide Eriksen\\\href{mailto:mikkel.eriksen@gmail.com}{mikkel.eriksen@gmail.com}} diff --git a/macros/latex/contrib/unicode-alphabets/latex/csvsimple.tmp.patch.tex b/macros/latex/contrib/unicode-alphabets/latex/csvsimple.tmp.patch.tex deleted file mode 100644 index ea229dad78..0000000000 --- a/macros/latex/contrib/unicode-alphabets/latex/csvsimple.tmp.patch.tex +++ /dev/null @@ -1,20 +0,0 @@ -% https://github.com/T-F-S/csvsimple/issues/7 - -\makeatletter - -\def\set@csv@autohead{% - \toks0=\expandafter{\csname\csv@headnameprefix\csv@current@col\endcsname}% - \toks1=\expandafter{\csname csvcol\romannumeral\c@csvcol\endcsname}% - \begingroup\edef\csv@temp{\endgroup\noexpand\gdef\the\toks0{\the\toks1}\noexpand\csv@AtEndLoop{\noexpand\gdef\the\toks0{}}}% - \csv@temp% -} - -\csvset{% - head to column names prefix/.store in=\csv@headnameprefix,% - head to column names prefix=,% - xltabular/.style 2 args={ - @table={\csv@pretable\begin{xltabular}{#1}{#2}\csv@tablehead}{\csv@tablefoot\end{xltabular}\csv@posttable}, - late after line=\\}, -} - -\makeatother diff --git a/macros/latex/contrib/unicode-alphabets/latex/unicode-alphabets.sty b/macros/latex/contrib/unicode-alphabets/latex/unicode-alphabets.sty index 898fa9d4d9..0dd446dc21 100644 --- a/macros/latex/contrib/unicode-alphabets/latex/unicode-alphabets.sty +++ b/macros/latex/contrib/unicode-alphabets/latex/unicode-alphabets.sty @@ -1,4 +1,4 @@ -\ProvidesPackage{unicode-alphabets}[2020/03/11 Unicode alphabets in the Private Use Area] +\ProvidesPackage{unicode-alphabets}[2023/02/27 Unicode alphabets in the Private Use Area] % License: CC-BY-SA 4.0 % Author: Mikkel Eide Eriksen <mikkel.eriksen@gmail.com> @@ -12,8 +12,6 @@ \RequirePackage{csvsimple} -\input{csvsimple.tmp.patch} - \makeatletter \newcommand\alph@keys[1]{\pgfkeys{/unicode-alphabets/.cd,#1}} |