summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/longnamefilelist/longnamefilelist.sty
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/longnamefilelist/longnamefilelist.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/longnamefilelist/longnamefilelist.sty')
-rw-r--r--macros/latex/contrib/longnamefilelist/longnamefilelist.sty188
1 files changed, 188 insertions, 0 deletions
diff --git a/macros/latex/contrib/longnamefilelist/longnamefilelist.sty b/macros/latex/contrib/longnamefilelist/longnamefilelist.sty
new file mode 100644
index 0000000000..e9615888f9
--- /dev/null
+++ b/macros/latex/contrib/longnamefilelist/longnamefilelist.sty
@@ -0,0 +1,188 @@
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+\ProvidesPackage{longnamefilelist}[2012/09/30 v0.2
+ list files with long names (UL)]
+%%
+%% Copyright (C) 2012 Uwe Lueck,
+%% http://www.contact-ednotes.sty.de.vu
+%% -- author-maintained in the sense of LPPL below --
+%%
+%% This file can be redistributed and/or modified under
+%% the terms of the LaTeX Project Public License; either
+%% version 1.3c of the License, or any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% We did our best to help you, but there is NO WARRANTY.
+%%
+%% Please report bugs, problems, and suggestions via
+%%
+%% http://www.contact-ednotes.sty.de.vu
+%%
+%% == Usage with 'myfilist' ==
+%% \label{sec:myfilist}
+%% === Basically ===
+%% \label{sec:basic}
+%% In order to get a reduced and/or rearranged list of used files
+%% with the \ctanpkgref{myfilist} package,
+%% `longnamefilelist.sty' must be loaded earlier than
+%% `myfilist.sty'. This is due to a kind of limitation of the latter,
+%% it \emph{issues} `\listfiles' (TODO).
+%% Therefore `\listfiles' must be modified earlier---or \emph{issued} earlier,
+%% in this case the `\listfiles' in `myfilist.sty' does nothing.
+%% The file `SrcFILEs.txt' accompanying the distribution of 'longnamefilelist',
+%% e.g., can be generated by running the following file `srcfiles.tex'
+%% with \LaTeX:
+%% %% v0.1b 2012/03/14 avoid right-arrow substitution TODO:
+%% \begin{quotation}\tt\small
+%% \expandafter\def\expandafter\{\expandafter{\string{}
+%% \expandafter\def\expandafter\}\expandafter{\string}}
+%% \obeyspaces\obeylines
+%% \cs{ProvidesFile}\{srcfiles.tex\}[2012/03/12
+%% ~ file infos -\empty> SrcFILEs.txt]
+%% \cs{RequirePackage}\{longnamefilelist\}
+%% \cs{listfiles}[16]
+%% \cs{RequirePackage}\{myfilist\}
+%% \%\% documentation:
+%% \cs{ReadFileInfos}\{longnamefilelist\}
+%% \%\% documentation settings and auxiliaries:
+%% \cs{ReadPackageInfos}\{fifinddo,makedoc,niceverb\}
+%% \cs{ReadFileInfos}\{makedoc.cfg,mdoccorr.cfg,srcfiles\}
+%% \cs{ListInfos}[SrcFILEs.txt]
+%% \end{quotation}
+%%
+%% === Shorthand ===
+%% \label{sec:short}
+%% In the above example, the 'myfilist' command `\EmptyFileList'
+%% is missing---it is not intended there. Usually however,
+%% it \emph{is} intended, i.e., the following sequence of
+%% lines is wanted:
+%% \begin{quotation}\tt\small
+%% \expandafter\def\expandafter\{\expandafter{\string{}
+%% \expandafter\def\expandafter\}\expandafter{\string}}
+%% \obeyspaces\obeylines
+%% \cs{RequirePackage}\{longnamefilelist\}
+%% \cs{listfiles}[<digit><digit>]
+%% \cs{RequirePackage}\{myfilist\}
+%% \cs{EmptyFileList}[<read-again-files>]
+%% \end{quotation}
+%% With v0.2, the last three lines can be replaced by
+%% \[|\MaxLengthEmptyList{<digit><digit>}[<read-again-files>|]\]
+%% ---``optionally" without \qtd{`[<read-again-files>]'}.
+%% This may save the user from worrying about usage
+%% with 'myfilist'.
+%%
+%% == \cs{listfiles} extended ==
+%% \label{sec:list}
+%% |\listfiles[<number>]| ``orders" a final list of files
+%% with infos and optimizes the list's alignment
+%% (in plain text output) when the longest base filename
+%% consists of <number> characters:
+\renewcommand*{\listfiles}[1][\LNFL@chars@set]{%
+%% The default parameter `\LNFL@chars@set' is defined in Sec.~\ref{sec:set}.
+ \let\listfiles\relax
+ \def\LNFL@chars{#1}%
+%% This stores the actual parameter. It is used several times:
+%% for preparing the alignment and the final line of stars here
+%% and then for aligning each list entry by `\@listfiles'
+%% from `\@dofilelist'.
+%%
+%% \LaTeX's `\@dofilelist' appends a list of ``dummy" tokens `\\'
+%% to each filename before `\@listfiles' is run on the filename.
+%% \LaTeX's `\@listfiles' is run 8 times, and there are 8 dummies.
+%% Dummies not looked at by `\@listfiles' are removed by some
+%% ``killing" macro using a token that delimits the dummy list.
+%% We use `\relax' tokens as dummies instead. They need not to be removed.
+%% And we append <number> dummies. They are stored in a macro `\LNFL@dummies':
+ \let\LNFL@dummies\@empty
+%% `\LNFL@spaces' is used to align the list title ``*file list*"
+%% flushleft with the filenames:
+ \def\LNFL@spaces{ }%
+%% We also use more stars than \LaTeX\ below the list. %% space 2012/03/15
+%% (However, all of this can also be used for \emph{shorter} names
+%% with \emph{less} stars below.)
+ \def\LNFL@stars{***}%
+ \count@\LNFL@chars\relax
+%% This initializes the loop for adding dummies, title spaces,
+%% and stars below the list.
+ \@whilenum\count@>\z@\do{%
+ \edef \LNFL@dummies{\LNFL@dummies\relax}%
+ \ifnum8<\count@
+ \edef \LNFL@spaces { \LNFL@spaces}%
+ \fi
+ \edef \LNFL@stars {*\LNFL@stars}%
+ \advance\count@\m@ne
+ }%
+%% Our version of `\@listfiles' takes one token ahead at a time
+%% and counts the numbes of tokens that have been looked at so far.
+%% For each \emph{dummy} found instead of a filename character,
+%% (as with \LaTeX) a space is added to `\filename@area'
+%% that is used to move the filenames right.
+%% As opposed to the \LaTeX\ original version, `\@listfiles' stops
+%% being applied after <number> times:
+ \def\@listfiles##1{%
+ \ifx##1\relax \edef\filename@area{ \filename@area}\fi
+ \advance\count@\m@ne
+ \ifnum\count@>\z@ \expandafter\@listfiles \fi }%
+ \def\@dofilelist{%
+%% In \LaTeX's `\@dofilelist', we first replace the single space
+%% starting the title line by `\LNFL@spaces':
+ \typeout{^^J\LNFL@spaces *File List*}%
+ \@for\@currname:=\@filelist\do{%
+%% This is the loop body adding a list entry line, first like \LaTeX:
+ \filename@parse\@currname
+ \edef\reserved@a{%
+ \filename@base.%
+ \ifx\filename@ext\relax tex\else\filename@ext\fi}%
+ \expandafter\let\expandafter\reserved@b
+ \csname ver@\reserved@a\endcsname
+%% We use `\@tempa' for expanding both the filename and the list of dummies
+%% in time:
+ \edef\@tempa{\filename@base\LNFL@dummies}%
+ \count@\LNFL@chars\relax
+ \expandafter\expandafter\expandafter\@listfiles\expandafter
+ \filename@area\@tempa
+ \typeout{%
+ \filename@area\reserved@a
+ \ifx\reserved@b\relax\else
+%% I prefer \emph{two} spaces between the columns to four of them:
+ \space\space %%% \@spaces
+ \reserved@b\fi}}%
+%% The line of stars:
+ \typeout{ \LNFL@stars^^J}}%
+}
+%% %% moved up from end 2012/09/30:
+%% TODO: 1.~keyval package option avoiding `\listfiles'
+%% 2.~measuring longest filename?
+%% == Setting Name Length \emph{before} \cs{listfiles} ==
+%% \label{sec:set}
+%% I first used |\SetLongNameFileListChars{<number>}|
+%% for combining the package with 'myfilist' right in place of
+%% `\listfiles[<number>]'. Both commands have the same effect
+%% on the following `\RequirePackage{myfilist}'.
+%% Now that I have realized that I could issue `\listfiles' earlier,
+%% `\SetLongNameFileListChars' is rather obsolete---but who knows\,...?
+\newcommand*{\SetLongNameFileListChars}{\def\LNFL@chars@set}
+%% This macro `\LNFL@chars@set' is used as the default for our new
+%% optional parameter for `\listfiles' (Sec.~\ref{sec:list}).
+\SetLongNameFileListChars{8}
+%% This sets the default value for `\listfiles' to the maximum number
+%% of characters in the base filename that
+%% \LaTeX\ %% 2012/03/15 %%% `\LaTeX'
+%% somewhat expects.
+%%
+%% == Shorthand for 'myfilist' ==
+%% |\MaxLengthEmptyList{<digit><digit>}[<read-again-files>]|
+%% as described in Section~\ref{sec:short} (v0.2):
+\newcommand*{\MaxLengthEmptyList}[1]{%
+ \listfiles[#1]\RequirePackage{myfilist}\EmptyFileList}
+%%
+%% == Leaving the Package File ==
+\endinput
+%%
+%% == VERSION HISTORY ==
+
+v0.1 2012/03/11 very first
+ 2012/03/12 debugging; \LNFL@spaces, \LNFL@stars
+v0.1b 2012/03/14 doc fixes: avoiding arrow substitution in listing,
+ space after "who knows"
+v0.1c 2012/03/15 more typographical fixes concerning "\LaTeX"
+v0.2 2012/09/30 \MaxLengthEmptyList