From b6227abf37f373d7db4dcf49b07c889c2fb04d2b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 12 Mar 2012 23:34:37 +0000 Subject: new latex package longnamefilelist (12mar12) git-svn-id: svn://tug.org/texlive/trunk@25620 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/longnamefilelist/lonaflst.sty | 149 +++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/longnamefilelist/lonaflst.sty (limited to 'Master/texmf-dist/tex/latex/longnamefilelist') diff --git a/Master/texmf-dist/tex/latex/longnamefilelist/lonaflst.sty b/Master/texmf-dist/tex/latex/longnamefilelist/lonaflst.sty new file mode 100644 index 00000000000..2ee96f83e5f --- /dev/null +++ b/Master/texmf-dist/tex/latex/longnamefilelist/lonaflst.sty @@ -0,0 +1,149 @@ +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{longnamefilelist}[2012/03/12 v0.1 + 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} +%% 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: +%% \begin{verbatim} +%% \ProvidesFile{srcfiles.tex}[2012/03/12 +%% file infos -> SrcFILEs.txt] +%% \RequirePackage{longnamefilelist} +%% \listfiles[16] +%% \RequirePackage{myfilist} +%% %% documentation: +%% \ReadFileInfos{longnamefilelist} +%% %% documentation settings and auxiliaries: +%% \ReadPackageInfos{fifinddo,makedoc,niceverb} +%% \ReadFileInfos{makedoc.cfg,mdoccorr.cfg,srcfiles} +%% \ListInfos[SrcFILEs.txt] +%% \end{verbatim} +%% +%% == \cs{listfiles} extended == +%% \label{sec:list} +%% |\listfiles[]| ``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 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 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. +%% (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 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}}% +} +%% == Setting Name Length \emph{before} \cs{listfiles} == +%% \label{sec:set} +%% I first used |\SetLongNameFileListChars{}| +%% for combining the package with 'myfilist' right in place of +%% `\listfiles[]'. 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' somewhat expects. +%% +%% TODO: 1.~keyval package option avoiding `\listfiles' +%% 2.~measuring longest filename? +%% +%% == Leaving the Package File == +\endinput +%% +%% == VERSION HISTORY == + +v0.1 2012/03/11 very first + 2012/03/12 debugging; \LNFL@spaces, \LNFL@stars -- cgit v1.2.3