diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/nicefilelist |
Initial commit
Diffstat (limited to 'macros/latex/contrib/nicefilelist')
-rw-r--r-- | macros/latex/contrib/nicefilelist/README | 60 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/doc/SrcFILEs.txt | 32 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/doc/nicefilelist.RLS | 9 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/doc/nicefilelist.pdf | bin | 0 -> 647513 bytes | |||
-rw-r--r-- | macros/latex/contrib/nicefilelist/docsrc/empty.f | 0 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/docsrc/nicefilelist.tex | 388 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/docsrc/provonly.fd | 4 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/docsrc/srcfiles.tex | 34 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/docsrc/wrong.prv | 1 | ||||
-rw-r--r-- | macros/latex/contrib/nicefilelist/nicefilelist.sty | 356 |
10 files changed, 884 insertions, 0 deletions
diff --git a/macros/latex/contrib/nicefilelist/README b/macros/latex/contrib/nicefilelist/README new file mode 100644 index 0000000000..6b2707e7bd --- /dev/null +++ b/macros/latex/contrib/nicefilelist/README @@ -0,0 +1,60 @@ + + README for the `nicefilelist' package + \listfiles Alignment with Date and Version Columns + (C) Uwe Lueck 2012/10/30 + + +While `longnamefilelist.sty' improves LaTeX's \listfiles with +respect to long base filenames only, the present `nicefilelist.sty' +can keep separate columns for +(i) date (ii) version, and (iii) "caption" +(don't write caption text in date column), +their alignment not being disturbed by short filename extensions +such as `.fd'. This is achieved basing on the `monofill' package. + +v0.7 offers a package option `[wrap]' for automatic word wrapping +within the caption column, using the `hardwrap' package, so +filenames and captions can be quite long without disturbing the +alignment. + +As opposed to the `dateiliste' package, this is about the plain +text output in the `.log' file or, with `myfilist', as a stand- +alone plain text file. + +The package `latexfileinfo-pkgs' + + http://ctan.org/pkg/latexfileinfo-pkgs + +describes `nicefilelist' in a more general context. A file +`nicefilelist.RLS' provides release information accessible by +packages described there. + + +LICENSE: + +The package file `nicefilelist.sty' and the documentation files +`nicefilelist.pdf' and `nicefilelist.tex' 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, see + + http://www.latex-project.org/lppl.txt + +There is NO WARRANTY -- no responsibility can be accepted +when your monitor bursts. + +The `nicefilelist' package is author-maintained in the sense of +this license. + +The latest public version of the package is available at + + http://mirror.ctan.org/macros/latex/contrib/nicefilelist/ + +A TDS version of the package is available as + + http://mirror.ctan.org/install/macros/latex/contrib/nicefilelist.tds.zip + +Please report bugs, problems, suggestions, and bad English via + + http://www.contact-ednotes.sty.de.vu + + diff --git a/macros/latex/contrib/nicefilelist/doc/SrcFILEs.txt b/macros/latex/contrib/nicefilelist/doc/SrcFILEs.txt new file mode 100644 index 0000000000..193b1ad9de --- /dev/null +++ b/macros/latex/contrib/nicefilelist/doc/SrcFILEs.txt @@ -0,0 +1,32 @@ + + *File List* +-----RELEASE.--- -- -- -- -- -- +nicefilelist.RLS 2012/12/12 v0.7a [wrap], `mono' typo, vs. +-----PACKAGE.--- -- -- -- -- -- +nicefilelist.sty 2012/12/12 v0.7a more file list alignment (UL) +------DOCSRC.--- -- -- -- -- -- +nicefilelist.tex 2012/12/12 -- documenting nicefilelist.sty + srcfiles.tex 2012/10/30 -- file infos -> SrcFILEs.txt +--------DEMO.--- -- -- -- -- -- + provonly.fd -- -- -- -- no date, no version, but a lot of info, + look how that is wrapped! + wrong.prv * NOT FOUND * + empty.f * NOT FOUND * +--------USED.--- -- -- -- -- -- + hardwrap.sty 2011/02/12 v0.2 Hard wrap messages + myfilist.sty 2012/11/22 v0.71 \listfiles -- mine only (UL) + readprov.sty 2012/11/22 v0.5 file infos without loading (UL) + fifinddo.sty 2012/11/17 v0.61 filtering TeX(t) files by TeX (UL) + makedoc.sty 2012/08/28 v0.52 TeX input from *.sty (UL) + niceverb.sty 2012/11/27 v0.51 minimize doc markup (UL) + texlinks.sty 2012/12/08 v0.71 TeX-related links (UL) + makedoc.cfg 2012/11/30 -- documentation settings + mdoccorr.cfg 2012/11/13 -- `makedoc' local typographical corrections +-not-so-much.--- -- -- -- -- -- + kvsetkeys.sty 2009/07/30 v1.5 Key value parser with default handler + support (HO) + *********** + + List made at 2012/12/12, 23:52 + from script file srcfiles.tex + diff --git a/macros/latex/contrib/nicefilelist/doc/nicefilelist.RLS b/macros/latex/contrib/nicefilelist/doc/nicefilelist.RLS new file mode 100644 index 0000000000..42734de895 --- /dev/null +++ b/macros/latex/contrib/nicefilelist/doc/nicefilelist.RLS @@ -0,0 +1,9 @@ +\ProvidesFile{nicefilelist.RLS} %% RELEASE INFO + [{2012/12/12 v0.7a [wrap], `mono' typo, vs.}] + [{2012/10/30 r0.7 v0.7 [wrap] option}] + [{2012/10/11 r0.6 v0.6 \string\MaxBaseEmptyList*}] + [2012/10/01 r0.5 v0.5 \string\MaxBaseEmptyList] + [{2012/05/20 r0.4 v0.4 Kabelschacht + [r] }] + [2012/05/20 v0.3 Kabelschacht reimplementation] + [2012/03/29 v0.2 reimpl.: much within \string\typeout] + [2012/03/23 v0.1(a) initial] diff --git a/macros/latex/contrib/nicefilelist/doc/nicefilelist.pdf b/macros/latex/contrib/nicefilelist/doc/nicefilelist.pdf Binary files differnew file mode 100644 index 0000000000..ebf7a8743e --- /dev/null +++ b/macros/latex/contrib/nicefilelist/doc/nicefilelist.pdf diff --git a/macros/latex/contrib/nicefilelist/docsrc/empty.f b/macros/latex/contrib/nicefilelist/docsrc/empty.f new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/macros/latex/contrib/nicefilelist/docsrc/empty.f diff --git a/macros/latex/contrib/nicefilelist/docsrc/nicefilelist.tex b/macros/latex/contrib/nicefilelist/docsrc/nicefilelist.tex new file mode 100644 index 0000000000..8cb9643857 --- /dev/null +++ b/macros/latex/contrib/nicefilelist/docsrc/nicefilelist.tex @@ -0,0 +1,388 @@ +\ProvidesFile{nicefilelist.tex}[2012/12/12 documenting nicefilelist.sty] +\title{\pkg{\huge nicefilelist.sty + }\\---\\\cs{listfiles} Alignment for Connoisseurs\thanks{This + document describes version + \textcolor{blue}{\UseVersionOf{\jobname.sty}} + of \pkg{\jobname.sty} as of \UseDateOf{\jobname.sty}.}} +{ \RequirePackage{makedoc} \ProcessLineMessage{} + \MakeJobDoc{18}%% 2012/10/30 + {\SectionLevelTwoParseInput} } +\documentclass[fleqn]{article}%% TODO paper dimensions!? +\input{makedoc.cfg} %% shared formatting settings +\usepackage[wrap]{nicefilelist} \listfiles +%% <- 2012/10/30 try without 'myfilist' +\MDkeywords{Package management, document management, plain text output} +\sloppy +\begin{document} +\maketitle +\begin{MDabstract} +While \CtanPkgRef{longnamefilelist}{longnamefilelist.sty} +improves \LaTeX's \cs{listfiles} with respect to long base filenames only, +'nicefilelist.sty' can keep separate columns for +(i)~date, (ii)~version, and (iii)~``caption" %% 1st , 2012/10/30 +(don't write caption text in date column), +their alignment not being disturbed by short filename extensions such as `.fd'. +This is achieved basing on the \ctanpkgref{monofill} package. + +% Thus 'nicefilelist' is more ``powerful" than 'longnamefilelist', +% the former however is an ``extension" of the latter +% neither with respect to implementation nor with respect to user interface. + +%% <- 2012/10/29 -> +v0.7 offers a package option `[wrap]' for automatic word wrapping within +the caption column (using the \ctanpkgref{hardwrap} package), +so filenames and captions can be quite long without disturbing alignment. + +As opposed to the \ctanpkgref{dateiliste} package, this is about the +\meta{plain text} output in the `.log' file or, with \ctanpkgref{myfilist}, +as a stand-alone plain text file. + +\MDaddtoabstract{Related packages:} Cf.~\ctanpkgref{latexfileinfo-pkgs}. +\end{MDabstract} +\tableofcontents +\section{Features and Usage} +% We are describing relations to, ahm, related packages---rather brief{}ly. +% The \ctanpkgref{latexfileinfo-pkgs} package provides a more general overview. +% %% <- 2012/05/18 +%% 2012/10/29: +Additionally or also ``complementarily" to the presentation given here, +the functionality of the package is summarized in the file +`latexfileinfo_pkgs.htm' from the \ctanpkgref{latexfileinfo-pkgs}, +in a comparison with packages resembling 'nicefilelist' in +certain respects. + +\subsection{Relation to 'longnamefilelist.sty'} +\CtanPkgRef{longnamefilelist}{longnamefilelist.sty} equips +\cs{listfiles} with an optional argument for the maximum number of characters +in the base filename. By contrast, 'nicefilelist' does not provide +arguments for \cs{listfiles}, rather column widths for basename, extension, +and version number are determined by \emph{templates} using +\CtanPkgRef{monofill}{monofill.sty}. As a ``template" for doing this, +see the initial settings in Sec.~\ref{sec:templates}. +(Such settings must precede the \cs{listfiles command}) +So 'nicefilelist''s \emph{user interface} (at present) does not \emph{extend} +'longnamefilelist''s user interface. + +Using 'monofill' is a very different approach than the one of 'longnamefilelist'. +'nicefilelist' is more powerful than 'longnamefilelist', but is not based on it +in any way. It does not make sense to load both packages, they just overwrite +each other's behaviour of \cs{listfiles}. + +'longnamefilelist' may become ``obsolete" by the present package, +unless one finds that its version of \cs{listfiles} looks fine enough +and it is easier to understand and to use than 'nicefilelist'. + +\subsection{Installing} +The file 'nicefilelist.sty' is provided ready, installation only requires +putting it somewhere where \TeX\ finds it +(which may need updating the filename data + base).\urlfoot{ukfaqref}{inst-wlcf} + +\subsection{Calling} +%% restructured for v0.7 2012/10/29: +Below the `\documentclass' line(s) and above `\begin{document}', +you load 'nicefilelist.sty' (as usually) by +\[`\usepackage{nicefilelist}'\] +or by +\[`\usepackage[<options>]{nicefilelist}'\] +where <options> may be `r', `wrap', or `r,wrap'~\dots---see +summaries in sections~\ref{sec:set} and \ref{sec:opt} +on the package options and an example in Section~\ref{sec:short}. +Alternatively---e.g., for use with \ctanpkgref{myfilist} from the +\ctanpkgref{fileinfo} bundle (in a ``\TeX~script"), see Section~\ref{sec:myfilist}, +or in order to include the `.cls' file in the list---you may load it by +\[`\RequirePackage{nicefilelist}'\] +or by +\[`\RequirePackage[<options>]{nicefilelist}'\] +before `\documentclass' or when you don't use `\documentclass'. + +\subsection{Choosing Settings} %% new 2012/10/29 +\label{sec:set} + +\subsubsection{The Columns, Their Widths, and Their ``Missing" Content} +\label{sec:cols} + +\AddQuotes %% 2012/10/29 + +The 'nicefilelist' package considers the listing from `\listfiles' +a five-column table, the columns being (reserved for) \ +(i)~the base filename, \ (ii)~the filename extension, \ +(iii)~the date, \ +(iv)~the version (or with option `[r]': the release) number, and \ +(v)~the caption \ of a \LaTeX\ source file. The filename base column +is right-adjusted, the other ones are left-adjusted. +Date, version, and caption are made up from the <f-info> argument in +\[|\Provides<f-type>{<f-base>.<f-ext>}[<f-info>|]\] +where <f-type> is `Class', `Package', or `File'. + +The fixed usual format `YYYY/MM/DD' for the date is assumed; +in fact, when <f-info> doesn't start according to this format, +it is assumed that no date is given, and some ``missing'' +text will appear in the ``date" column, determined by a macro +|\NFLnodate|. The version number +(or ``string") must follow in format `v<digit>.<digits>', +otherwise some ``missing" text appears in the ``version" column, +determined by a macro |\NFLnoversion|. +What remains is placed in the ``caption" column. +|\NFLnotfound| determines an alternative filling +in the case that <f-info> cannot be obtained. +See the default settings for these ``failure" texts in +Section~\ref{sec:fail}. + +The column widths for filename base and extension +and the column width for version or release +are determined using the \ctanpkgref{monofill} package. +They have ``field identifiers" |f-base|, |f-ext|, +and |f-version| respectively. The respective widths are +determined by templates <longest> in +\[|\MDfieldtemplate{<field-id>}{<longest>}|\] +See Section~\ref{sec:templates} for the default settings. +Probably only adjusting the width for \emph{base} filenames +is required in real life, see the example in Section~\ref{sec:short}. + +The spaces between the columns are determined by macros +|\NFLspaceI|, |\NFLspaceII|, and |\NFLspaceIII|, +see Section~\ref{sec:templates} for the defaults. + +\DontAddQuotes %% 2012/10/29 + +\subsubsection{The Caption Column} +The width of the caption column (unfortunately) is determined by +the stuff enumerated above and the width of the console output window or screen. +With long filenames and long captions, the result may look poor. +the \emph{characters} that don't fit into the line may continue +at left end of the window or screen, disturbing the appearance +of a ``table"---unless you use package option |[wrap]|. +The latter requires the \ctanpkgref{hardwrap} package by +Will Robertson and Kevin Godby +(``\Wikienref{not invented here}"). This package tries to determine +the screen width by some subtle tests, and until it finds something +better, it assumes a width of 80 characters (I suppose). +'hardwrap' does \wikienref{Word wrap}{\emph{word wrapping}}, +i.e., it doesn't just put \emph{characters} not fitting into the +next line, but entire \emph{words}. Moreover, it allows inserting +some ``newline sequence" before the first word that is too much, +and we use this feature here to put the next word into the +\emph{caption column} rather than at the beginning of the next line. +(Details and implementation are in Section~\ref{sec:opt}.) + +If you are not happy with the column width that 'hardwrap' +chooses, but want to assume your own width <max-line-chars> +(e.g., your width, measured by your doctor, divided by the + width of one character), +compute its difference <max-line-chars-minus-one> to 1 +(maybe by your electronic calculator, or an emulation, or + a Lua script, cf.~\ctanpkgref{lualatex-doc}, or by + \ctanpkgref{bigintcalc}), and enter +the 'hardwrap' instruction +\[|\setmaxprintline{<max-line-chars-minus-one>}|\] +when 'hardwrap' or 'nicefilelist' have been loaded +\emph{and} before the internal macro `\@dofilelist' is run +(which happens at the end of the document or when + \ctanpkgref{myfilist}'s `\ListInfos' is issued, for instance). + +\subsection{Usage and Samples with 'myfilist.sty'} +\label{sec:myfilist} +\subsubsection{Basically} +In order to get a reduced and/or rearranged list of file infos +with the \ctanpkgref{myfilist} package, +`nicefilelist.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 \cs{listfiles} must be modified earlier---or \emph{issued} earlier, +in this case the \cs{listfiles} in `myfilist.sty' does nothing. +The file `SrcFILEs.txt' accompanying the---first---distribution of +'nicefilelist' %% corr., was `longname'; `first' etc. 2012/10/29 +was generated by running the following file `srcfiles.tex' with \LaTeX: +\begin{quotation}\tt\small +\expandafter\def\expandafter\{\expandafter{\string{} +\expandafter\def\expandafter\}\expandafter{\string}} +\obeyspaces\obeylines +\cs{ProvidesFile}\{srcfiles.tex\}[2012/03/23 + ~ file infos -\empty> SrcFILEs.txt] +\cs{RequirePackage}\{nicefilelist\} +\%\% INSERT MODIFICATIONS OF INITIAL +\%\% \verb+`nicefilelist'/`monofill'+ SETTINGS HERE! +\cs{RequirePackage}\{myfilist\} +\%\% documentation: +\cs{ReadFileInfos}\{nicefilelist\} +\%\% demonstration: +\cs{ReadFileInfos}\{provonly.fd,wrong.prv,empty.f\} +\% \cs{ReadFileInfos}\{utopia.xyz\} +\%\% present file: +\cs{ReadFileInfos}\{nicefilelist\} +\cs{ReadFileInfos}\{srcfiles\} +\cs{ListInfos}[SrcFILEs.txt] +\end{quotation} +Note the lines where to place \strong{custom} modifications of settings +for alignment (Section~\ref{sec:templates}) or failure displays +(Section~\ref{sec:fail}). + +The previous code mentions the following files: +\begin{description} + \item[`provonly.fd'] has a proper `\ProvidesFile' line without date, + for seeing what happens in the date and version columns. + It also was a test for the case that there are fewer + characters than a date has, and there is no blank space. + \item[`wrong.prv'] has a `\ProvidesFile' line with wrong file name. + \item[`empty.f'] just is an empty file. + \item[`utopia.xyz'] is not present at all, you get an error when you remove + the comment mark. +\end{description} +Moreover, my `.tex' files have dates, but not version numbers, +so you see what happens then: +\vskip\topsep +\begin{small}\tt +\obeyspaces\obeylines +~ *File List* +nicefilelist.sty 2012/03/23 v0.1 \rlap{more file list alignment (UL)} +~ monofill.sty 2012/03/19 v0.1a monospace alignment (UL) +~ myfilist.sty 2011/01/30 v0.3a \rlap{\cs{listfiles} -- mine only (UL)} +~ readprov.sty 2010/11/27 v0.3 \rlap{file infos without loading (UL)} +nicefilelist.tex 2012/03/23 -- \rlap{documenting nicefilelist.sty} +~ provonly.fd -- -- -- -- such +~ wrong.prv * NOT FOUND * +~ empty.f * NOT FOUND * +~ srcfiles.tex 2012/03/23 -- file infos -> SrcFILEs.txt +~ *********** +~ +~List made at 2012/03/23, 10:31 +~from script file srcfiles.tex +\end{small} +%% TODO update example!? +%% +\subsubsection{More Generally and Shorthand} +\label{sec:short} + +\AddQuotes %% 2012/10/11 + +In the above example, the 'myfilist' command `\EmptyFileList' +was missing---it was not intended there. Usually however, %% is -> was 2012/10/29 +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}[r]\{nicefilefilelist\} +\cs{MFfieldtemplate}\{f-base\}[<longest-name>] +\cs{RequirePackage}\{myfilist\} +\cs{EmptyFileList}[<read-again-files>] +\end{quotation} +Here you also see usage of package option |[r]| for +release numbers and the adjustment + \[|\MFfieldtemplate{f-base}{<longest-name>}|\] +according to Section~\ref{sec:templates}. + +With v0.5, the last three code lines in the snippet above +can be replaced by +\[|\MaxBaseEmptyList{<longest-name>}[<read-again-files>]|\] +---``optionally" without `[<read-again-files>]'. +This may save the user from worrying about usage +with 'myfilist'. + +\DontAddQuotes + +'nicefilelist' formats file lists nicely +even when base filenames have eight characters at most, +what \LaTeX's original `\listfiles' was made for. +v0.6 simplifies this case by a star version of `\MaxBaseEmptyList': +\pagebreak[2] +\[|\MaxBaseEmptyList*|\] +works like `\MaxBaseEmptyList{nicefile}' (eight characters)---still, +optional `[<read-again-files>]' may follow. This feature is demonstrated +with \ctanpkgref{inputtrc} v/r0.3. + +\subsubsection{Sample with Wrapped Caption Column} %% 2012/10/30 + +\AddQuotes + +The most recent version of the accompanying `SrcFILEs.txt' contains +the following: +\bigskip +\begingroup \footnotesize +\hrule +\verbatiminput{SrcFILEs.txt} +\hrule +\endgroup +\bigskip + +This exemplifies +\begin{enumerate} + \item \strong{wrapping} of `provonly.fd''s and \ctanpkgref{kvsetkeys}\file{.sty} + file info within the \strong{caption} column + using 'nicefilelist''s `[wrap]' option, + \item inserted ``\strong{comments}" from \ctanpkgref{myfilist}'s `\FileListRemark', + \item a file `nicefilelist.RLS' for a \strong{release summary}. This is to track + what has happened most recently, whether the most recent release + has been installed (system-wide), or (for me) whether most recent versions + of package and documentation have been released. + When such an `.RLS' file is installed together with packages + in the `tex' subtree of a \acro{TDS}, the release summary can be + accessed quickly as a \strong{terminal display} + by one of the packages \ctanpkgref{ltxfileinfo}, + \ctanpkgref{latexfileversion}, or \ctanpkgref{typeoutfileinfo}. + One aim of the `[wrap]' option is allowing longer ``release captions" + (looking fine in the package file list) than fit into a small part + of a single line. +\end{enumerate} +% +The above `SrcFILEs.txt' has been generated from the following version +of the \TeX\ script `srcfiles.tex': +\bigskip +\hrule +\verbatiminput{srcfiles.tex} +\smallskip +\hrule + +\DontAddQuotes + +\section{Implementation} +\subsection{Package File Header (Legalese)} +\input{nicefilelist.doc} + +% \pagebreak %% 2012/09/30 rm. 2012/10/29 +\section{Credits} +\begin{enumerate} %% 2012/05/20 + \item It was \ctanpkgauref{muench-hm}{\textsc{Martin M\"unch}} + who pointed out the shortcomings + of 'longnamefilelist' that the present package addresses---thanks! + %% 2012/05/20: + \item For \textsc{Alois Kabelschacht}---whose idea in + TUGboat~\textbf{8}~\#2\footnote{\tugbartref{tb08-2/tb18kabel}{% + ``&\expandafter\ vs.\ %% .\ 2012/12/12 + &\let\ and &\def\ in Conditionals + and a Generalization of PLAIN's &\loop,"} + TUGboat Vol.~8 (1987), No.~2, pp.~184f. + (\urlhttpref{tug.org/TUGboat/tb08-2/tb18kabel.pdf})} + is used for v0.3---cf.\ the \ctanpkgref{dowith} documentation. +\end{enumerate} + +\section{Missing} +% \begin{enumerate} %% rm. 2012/10/29 +% \item + The package once might provide \ctanpkgref{keyval}-style + optional arguments for \cs{listfiles} or even call \cs{listfiles} + automatically with 'keyval' package options. +% %% 2012/05/18: +% \item Another idea from \textsc{Martin Muench}: wrapping inside caption column. +% Can \ctanpkgref{hardwrap} help? +% \end{enumerate} + +\end{document} + +VERSION HISTORY + +2012/03/20 for v0.1 started +2012/03/22 trying something +2012/03/23 for v0.1a without "aligning the dots" etc. +2012/05/18 for v0.30 Legalize -> Legalese; add. TODO "wrapping"; + ref. to `latexfileinfo-pkgs' +2012/05/20 for v0.31 mention Kabelschacht +2012/05/20 for v0.4 on new package option [r] +2012/09/30 for v0.5 \MaxBaseEmptyList, doc. \pagebreak +2012/10/11 for v0.6 \MaxBaseEmptyList*, \AddQuotes +2012/10/29 for v0.7 "Mnch", one item less missing, MDabstract, + usage restructured and extended +2012/10/30 \listfiles +2012/12/12 for v0.7a vs.\ diff --git a/macros/latex/contrib/nicefilelist/docsrc/provonly.fd b/macros/latex/contrib/nicefilelist/docsrc/provonly.fd new file mode 100644 index 0000000000..52aa2c3604 --- /dev/null +++ b/macros/latex/contrib/nicefilelist/docsrc/provonly.fd @@ -0,0 +1,4 @@ +%\ProvidesFile{provonly.fd}[2012/03/22 v0.11a such] +%\ProvidesFile{provonly.fd}[such] +\ProvidesFile{provonly.fd}[no date, no version, but a lot of info, + look how that is wrapped!] diff --git a/macros/latex/contrib/nicefilelist/docsrc/srcfiles.tex b/macros/latex/contrib/nicefilelist/docsrc/srcfiles.tex new file mode 100644 index 0000000000..795e982e7d --- /dev/null +++ b/macros/latex/contrib/nicefilelist/docsrc/srcfiles.tex @@ -0,0 +1,34 @@ +\ProvidesFile{srcfiles.tex} + [2012/10/30 file infos -> SrcFILEs.txt] +\RequirePackage[r,wrap]{nicefilelist} +\RequirePackage{filedate} +\MaxBaseEmptyList{nicefilelist} + [nicefilelist.sty,% + readprov.sty,myfilist.sty,% + hardwrap.sty] +\FileListRemark[ -- ]{-----RELEASE.---} +\ReadFileInfos{nicefilelist.RLS} +\FileListRemark[ -- ]{-----PACKAGE.---} +\ReadPackageInfos{nicefilelist} +\FileListRemark[ -- ]{------DOCSRC.---} +\ReadFileInfos{nicefilelist,srcfiles.tex} +\FileListRemark[ -- ]{--------DEMO.---} +\ReadFileInfos{provonly.fd,wrong.prv,empty.f} +%\ReadFileInfos{utopia.xxx} +%\FileListRemark[ -- ]{DOCUTILITIES.---} +%\FileListRemark[ -- ]{usedNICETEXT.---} +\FileListRemark[ -- ]{--------USED.---} +\ReadPackageInfos{hardwrap, + myfilist,readprov, + fifinddo,makedoc,niceverb,texlinks} +\ReadFileInfos{makedoc.cfg,mdoccorr.cfg} +\FileListRemark[ -- ]{-not-so-much.---} +\ReadPackageInfos{kvsetkeys} +%\NoStopListInfos[SrcFILEs.txt] +%\EqualityMessages +\CheckDateOfPDFmod{nicefilelist.sty} +\CheckDateOfPDFmod{nicefilelist.tex} +\CheckDateOfPDFmod{nicefilelist.RLS} +\CheckDateOfPDFmod{srcfiles.tex} +%\stop +\NoBottomLines \ListInfos[SrcFILEs.txt] diff --git a/macros/latex/contrib/nicefilelist/docsrc/wrong.prv b/macros/latex/contrib/nicefilelist/docsrc/wrong.prv new file mode 100644 index 0000000000..166454f5c8 --- /dev/null +++ b/macros/latex/contrib/nicefilelist/docsrc/wrong.prv @@ -0,0 +1 @@ +\ProvidesFile{diffname.prv}[2012/03/23 v0.1 wrong] diff --git a/macros/latex/contrib/nicefilelist/nicefilelist.sty b/macros/latex/contrib/nicefilelist/nicefilelist.sty new file mode 100644 index 0000000000..87d66f4886 --- /dev/null +++ b/macros/latex/contrib/nicefilelist/nicefilelist.sty @@ -0,0 +1,356 @@ +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{nicefilelist}[2012/12/12 v0.7a + more file list alignment (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 +%% +%% === Alignment Settings === +%% \label{sec:templates} +%% We use the \ctanpkgref{monofill} package for alignment of plain text: +\RequirePackage{monofill}[2012/10/29] +%% See its documentation for details. +%% %% <- added 2012/10/29 -> +%% The `[wrap]' option provided by 'nicefilelist' v0.7 requires +%% 'monofill' v0.2 as of 2012-10-29. +%% +%% We support three alignment ``fields" according to the terminology of \pkg{monofill}. +%% Their ids are |f-base| for base filenames, |f-ext| for filename extensions, +%% % |f-date| for the revision date, +%% and |f-version| for the revision version id of a file %%% , +%% % the latter two +%% as read from `\ProvidesFile', `\ProvidesPackage', +%% or `\ProvidesClass' command in the file. +%% Initial settings for them are following. +%% For modifying them, load 'nicefilelist.sty', +%% then type your own settings, then issue `\listfiles' +%% or load 'myfilist.sty'. +\MFfieldtemplate{f-base}{nicefilelist} +\MFfieldtemplate{f-ext}{tex} +\MFfieldtemplate{f-version}{v0.11a} +%% We are not supporting version numbers greater than 9 at present---sorry! (TODO) +%% +%% |\NFLspaceI|, |\NFLspaceII|, and |\NFLspaceIII| +%% determine the space between the four +%% columns for names, dates, versions, and ``captions": +\newcommand*{\NFLspaceI} { \space} +\newcommand*{\NFLspaceII} { \space} +\newcommand*{\NFLspaceIII}{ } +%% +%% === Failure Displays === +%% \label{sec:fail} %% was failure 2012/10/29 +%% |\NFLnodate| is displayed in place of a file date if it seems +%% not to be given (configurable): +\newcommand*{\NFLnodate}{ -- \space-- --} +%% |\NFLnoversion| likewise---however, for alignment, +%% each wanted space must be specified as `\space' +%% (not just a code blank space). +%% It may need adjustment (by `\renewcommand') when +%% `\MFfieldtemplate{f-version}' is modified: +\newcommand*{\NFLnoversion}{\space--} +%% |\NFLnotfound| is for files with wrong or no +%% \cs{Provides.\empty..} command: +\newcommand*{\NFLnotfound}{ * NOT FOUND *} +%% +%% === Package Options === +%% \label{sec:opt} +%% v0.4 offers package option |[r]| that allows strings with `r' %% |...| 2012/10/30 +%% in place of `v', for ``release." `\NFL@v@digit''s definition +%% therefore depends ... we use |\@listfiles| for a ``message" +%% there. For the original restricted functionality, it expands +%% to |\NFL@false|. +\def\@listfiles{\noexpand\NFL@false} +%% Package option `[r]' carries out another test instead. +%% See the accompanying file `SrcFILEs.txt' to see the effect. +%% TODO: update example!? +\DeclareOption{r}{% + \def\@listfiles{% + {\noexpand\NFL@ifx@kbl##1r% + {\noexpand\NFL@digits##2\noexpand\@nnil}% + \noexpand\NFL@false}% + }% +} +%% v0.7 offers package option |[wrap]| for automatical wrapping within %% |...| 2012/10/30 +%% the "captions" column, based on Will Robertson's and Kevin Godby's +%% \ctanpkgref{hardwrap} package. The difference between this option +%% and the functionality without is controlled by the macro +%% `\NFL@filerow'. +%% %% 2012/10/30: +%% \emph{Without} it expands to `\typeout' +\newcommand*{\NFL@filerow}{\typeout} +%% ---`\let' does'nt work with 'myfilist''s redefinition of +%% `\typeout'. +%% \emph{With} `[wrap]', `\NFL@filerow' applies 'hardwrap''s +%% `\HardWrap': +\DeclareOption{wrap}{% + \renewcommand*{\NFL@filerow}[1]{% + \HardWrap\typeout\hw@maxprintline\relax{^^J% + \MFrightinfield\space{f-base} % + \MFleftinfield \space{f-ext}% + \NFLspaceI\@spaces\space\@spaces\space \NFLspaceII + \MFrightinfield\space{f-version}\NFLspaceIII}{% + #1}}% +%% Alignment of filenames with 'hardwrap' seems to need + \renewcommand*{\MFfillelement}{\MFotherspace} +%% from \ctanpkgref{monofill} v0.2. %% was `monospace' 2012/12/12 +} +%% The display width is controlled by 'hardwrap''s counter +%% `\hw@maxprintline'. Unless 'hardwrap' finds something special, +%% its content is 79, corresponding to a display width of +%% 80 characters (I believe---counting the leftmost character +%% as \qtd{0}, as editors like to do). You can choose a different +%% content value <max-char-col> by 'hardwrap''s +%% \[|\setmaxprintline{<max-char-col>}|\] +\ProcessOptions +%% The next `\ifx' is to check whether `[wrap]' has been demanded +%% and 'hardwrap' is needed: +\ifx\NFL@filerow\typeout \else + \RequirePackage{hardwrap} +\fi +%% +%% === Safe Tests === %% below options 2012/10/29 +%% \label{sec:safe} +%% For fairly safe tests, we brief{}ly use an exotic version of `Q' +%% (similarly to \ctanpkgref{ifmptarg} and \ctanpkgref{url}): +\catcode`\Q=7 \let\NFL@criterion=Q \catcode`\Q=11 +%% %% 2012/03/27: +%% It appears to me that expandable tests like the ones employed here +%% never are perfectly safe; you only can say that it is safe with a +%% source meeting certain conditions. \ctanpkgref{fifinddo} originally +%% was made for ``plain text," to be read from files without assigning +%% \TeX's special category codes. \emph{Here} we assume that the source +%% (text in \cs{Provides.\empty..} arguments) will never contain such a +%% ``funny `Q'". +%% +%% === Redefining \cs{listfiles} === +%% Similarly to original \LaTeX, |\listfiles| carries almost everything +%% that is needed for the file list only. 2012-10-29: little point +%% in this, perhaps, in that the package should be loaded when +%% running `\listfiles' is intended---TODO. Or maybe it is loaded +%% \emph{just in case?} +\renewcommand*{\listfiles}{% + \let\listfiles\relax +%% ---this clears memory. Now \LaTeX\ doesn't collect file names for +%% &\listfiles when &\@listfiles is undefined, therefore +% \let\@listfiles\relax +%% % although we don't use it. +%% % (TODO use it in place of some `\NFL@'...?) +%% ... postponed for v0.4 ... +%% \vskip\smallskipamount\noindent +%% |\@dofilelist| is executed by the standard \LaTeX\ `\enddocument' +%% macro or by `\ListInfos' from the \ctanpkgref{myfilist} package. + \def\@dofilelist{% +%% ``Title:" + \typeout{^^J %% trick 2012/03/29 vv + \MFrightinfield{*File Lis}{f-base}t*}% + \@for\@currname:=\@filelist\do{% +%% This starts the loop through the list of files + \filename@parse\@currname + \edef\filename@ext{% + \ifx\filename@ext\relax tex\else\filename@ext\fi}% +%% Like \LaTeX's &\reserved@b: + \expandafter\let\expandafter\@tempb + \csname ver@\filename@base.\filename@ext\endcsname +%% According to `source2e.pdf', &\filename@area may be a directory. +%% Trying support of this is seems to be a new feature with v0.2---not +%% tested, TODO! + \edef\@tempa{\filename@area\filename@base}% +%% Actually I would like to be able to do even the filename parsing +%% expandably---for all systems, `texsys.cfg'!?? TODO + \NFL@filerow{% +%% Now all parsing and checking must be expandable. + \NFL@make@macro@arg\MFrightinfield\@tempa {f-base}.% + \NFL@make@macro@arg\MFleftinfield \filename@ext{f-ext}% + \NFLspaceI + \NFL@ifx@kbl\@tempb\relax\NFLnotfound{% + \NFL@make@macro@arg\NFL@space@split\@tempb + \NFL@maybe@three + \NFL@date@or@rest + }% + }% + }% +%% The line of stars: + \typeout{ %% trick vvv 2012/03/29 + \MFrightinfield{********}{f-base}***^^J}% +%% TODO or more stars as with 'longnamefilelist'? + }% +%% This finishes the definition of `\@dofilelist'. +%% % The definitions of macros called from `\@dofilelist' are following. +%% \[|\NFL@make@macro@arg<cmd-1><cmd-2>|\] results in +%% `<cmd-1>{<t-list>}' where <t-list> is the one-step expansion of +%% <cmd-2>: + \def\NFL@make@macro@arg##1##2{\expandafter##1\expandafter{##2}}% +%% |\NFL@space@split{<token-list>}{<spaced>}{<unspaced>}| +%% passes prefix and suffix as arguments to <spaced> +%% if a space token is within <token-list>, otherwise +%% <unspaced> gets the original <token-list> as single +%% argument. The latter is useful here where <token-list> +%% becomes visible only by an &\expandafter. +%% The following construction is discussed more generally +%% in the \ctanpkgref{bitelist} package. + \def\NFL@space@split##1{% + \NFL@return@space@split##1\@nil: \NFL@criterion\@nil\@nil@{##1}}% +%% `\NFL@return@spaces@split' essentially has \emph{three} parameters +%% delimited by ` ', `\@nil', and `\@nil' again. + \def\NFL@return@space@split##1 ##2\@nil##3\@nil@##4##5##6{% + \NFL@ifx@kbl\NFL@criterion{##2}% +%% If #2 is empty, `\NFL@ifx@kbl' (as of v0.3) compares +%% `\NFL@criterion' (criterion indicating ``unspaced") with +%% `\expandafter'. This only happens when the space is the last thing +%% in <token-list>, and `<spaced>' is chosen correctly. + {##6{##4}}{##5{##1}{##2}}}% +%% |\NFL@ifx@kbl{<token>}{<maybe-token>}{<ifx>}{<unlessx>}| +%% as of v0.3 should save some tokens, in some longer run, +%% especially if we want to add nestings---cf. \file{source2e.pdf} +%% for ``Kabelschacht." + \def\NFL@ifx@kbl##1##2{% + \ifx##1##2\expandafter \@firstoftwo + \else \expandafter \@secondoftwo \fi}% +%% Dealing with |\NFL@date@or@rest{<token-list>}| before `\NFL@maybe@three': + \def\NFL@date@or@rest##1{% + \NFL@if@date{##1}{##1}{\NFL@no@date@version##1}}% +%% |\NFL@if@date{<token-list>}{<yes>}{<no>}| ... + \def\NFL@if@date##1{\NFL@slashes##1\NFL@xi xyzxyzxyzx\@nil}% +%% |\NFL@slashes| checks that there are slashes at the expected places: + \def\NFL@slashes##1##2##3##4##5##6##7##8{% + \NFL@ifx@kbl##5/% + {\NFL@ifx@kbl##8/\NFL@ten@only\NFL@false}% + \NFL@false +%% This especially happens when <token-list> is empty. +%% Digit candidates back: + {##1##2##3##4##6##7}}% +%% If the word is a date, we now have taken 6 of the 8 digits. +%% \[|\NFL@ten@only{<digits>}<digit><digit>Q|\] +%% takes the two remaining and then a thing that should be `Q' +%% in the funny sense of Sec.~\ref{sec:safe}. + \def\NFL@ten@only##1##2##3##4{% + \NFL@ifx@kbl\NFL@xi##4\NFL@digits\NFL@false +%% Finally checking digits: + ##1##2##3\@nnil}% +%% |\NFL@digits<token>| is a loop through single tokens: + \def\NFL@digits##1{% + \NFL@ifx@kbl##1\@nnil\NFL@true{% + \NFL@if@digit@code##1<0\NFL@false{% + \NFL@if@digit@code##1>9\NFL@false\NFL@digits + }% + }% + }% +%% |\NFL@if@digit@code<char-1><relation><char-2><fits><bad>|: + \def\NFL@if@digit@code##1##2##3{% + \ifnum`##1##2`##3 \expandafter \@firstoftwo + \else \expandafter \@secondoftwo \fi}% +%% |\NFL@false| skips further candidates and dummies and chooses <no>: + \def\NFL@false##1\@nil{\@secondoftwo}% +%% |\NFL@true| skips further candidates and dummies and chooses <yes>: + \def\NFL@true##1\@nil{\@firstoftwo}% +%% We don't support version without date, therefore run +%% |\NFL@no@date@version| as soon as we find that the file info +%% does not start with a date: + \def\NFL@no@date@version{% + \NFLnodate\NFLspaceII\NFLnoversion@\NFLspaceIII}% +%% |\NFLnoversion@| adds filler to &\NFLnoversion: + \def\NFLnoversion@{% + \NFL@make@macro@arg\NFL@place@version\NFLnoversion}% +%% |\NFL@maybe@three{<word-1>}{<rest>}| looks whether <word-1> +%% is a date. If it is, it is written to screen, and then we look +%% if <rest> contains a version id. Otherwise ```<word-1>_<rest>'" +%% is considered a ``caption" only. + \def\NFL@maybe@three##1##2{% + \NFL@if@date{##1}% + {##1\NFLspaceII + \NFL@space@split{##2}% + \NFL@maybe@version@rest + \NFL@version@or@rest}% + {\NFL@no@date@version##1 ##2}}% +%% |\NFL@version@or@rest{<token-list>}|: + \def\NFL@version@or@rest##1{% + \NFL@if@version{##1}% + {\NFL@place@version{##1}}% + {\NFLnoversion@\NFLspaceIII##1}}% +%% |\NFL@if@version{<token-list>}{<yes>}{<no>}|: + \def\NFL@if@version##1{\NFL@v@digit##1xy\@nil}% +%% TODO: At applications you see how some tokens could be saved. +%% On the other hand, the macros are more transparent in the +%% present way. +%% \vskip\smallskipamount\noindent +%% |\NFL@v@digit{<t1>}{<t2>}{<rest>}| checks whether the first thing +%% is a `v' and the second a digit---unless package option `[r]' +%% was chosen. v0.4 uses `\edef' for choosing: + \edef\NFL@v@digit##1##2##3\@nil{% + \noexpand\NFL@ifx@kbl##1v% + {\noexpand\NFL@digits##2\noexpand\@nnil}% +%% |\@listfiles| will either expand to the original `\NFL@false' +%% or to a test on `r': + \@listfiles + \noexpand\@nil}% + \let\@listfiles\relax +%% |\NFL@place@version{<token-list>}| adds filler to version id: + \def\NFL@place@version##1{\MFleftinfield{##1}{f-version}}% +%% |\NFL@maybe@version@rest{<list-1>}{<list-2>}|: + \def\NFL@maybe@version@rest##1##2{% + \NFL@if@version{##1}% + {\NFL@place@version{##1}\NFLspaceIII##2}% + {\NFLnoversion@\NFLspaceIII##1 ##2}}% +} +%% === Shorthand for 'myfilist' === +%% \[|\MaxBaseEmptyList{<longest-name>}[<read-again-files>]|\] +%% (v0.5) or +%% \[|\MaxBaseEmptyList*[<read-again-files>]|\] +%% (v0.6) as described in Section~\ref{sec:short}: +\newcommand*{\MaxBaseEmptyList}{% + \@ifstar{\maxBaseEmptyList{abcdabcd}}\maxBaseEmptyList} +\newcommand*{\maxBaseEmptyList}[1]{% + \MFfieldtemplate{f-base}{#1}% + \RequirePackage{myfilist}\EmptyFileList} +%% So |\maxBaseEmptyList| is like former `\MaxBaseEmptyList' +%% without expecting a star---available to users. +%% +%% === Leaving the Package File === +\endinput +%% +%% === VERSION HISTORY === + +v0.1 2012/03/20 started + 2012/03/22 almost ready + 2012/03/23 debugging; \NFLspaceI etc.; + documentation completed + +v0.2 2012/03/24 file info processed by \typeout - start + 2012/03/25 trying, debugging + 2012/03/26 continued; \NFL@place@version, \NFLnoversion@; + works, reordered; another fix about Q -> \@empty + 2012/03/27 undone the latter, explained; improved remarks on + \@listfiles + 2012/03/29 alignment of title/stars with base<11 + +v0.30 2012/05/18f. \NFL@ifx@kbl in \NFL@return@space@split + 2012/05/20 all \ifx reimplemented, old code kept + STORED INTERNALLY +v0.31 2012/05/20 removing old code - STORED INTERNALLY +v0.32 2012/05/20 removing \NFL@xpxpxp; replacing \NFL@after@false + by \NFL@ifnum@kbl, keeping old code + STORED INTERNALLY +v0.33 2012/05/20 removing old code; added 3 %s + STORED INTERNALLY +v0.4 2012/05/20 option [r] +v0.5 2012/09/30 \MaxBaseEmptyList +v0.6 2012/10/03 \MaxBaseEmptyLists first arg. only optional + 2012/10/11 ... bad with 2nd opt. arg., * +v0.7 2012/10/13 "updating" date in \Provides...! + 2012/10/28 \HardWrap first try + 2012/10/29 \HardWrap newline material -> [wrap] + sec:test below sec:opt, mentioning `url' + 2012/10/30 correcting \NFL@filerow without wrapping, + doc.: |...| in sec:opt +v0.7a 2012/12/12 doc. monospace -> monofill |