JezK
Edit File: adhocfilelist.htm
<!DOCTYPE html> <!-- generated from adhocfilelist.tex, 2012/11/19 documenting adhocfilelist (UL), with blog.sty, 2013-01-04 --> <html><head> <meta http-equiv="content-type" content="text/html; ISO-8859-1"> <meta name="robots" content="index,follow,noarchive"> <title>List LaTeX file infos according to command line</title> </head><body> <a name="top-of-page"></a> <h1><code>adhocfilelist</code> — <table width="" height="6" border="0" cellpadding="0" cellspacing="0"><tbody> <!-- HVspace --> <tr valign="top"><td></td> </tr> </tbody></table> Listing LaTeX Source File Infos<br> According to Command Line</h1> <p> <small> [ <a href="#abstract">abstract</a> | <a href="#over">overview</a> | <a href="#required">requirements</a> | <a href="#install">installing</a> | <a href="#related">related</a> | <a href="#back">background</a> | <a href="#custom">customize</a> | <a href="#idea">idea/thanks</a> ]  [ <i><a href="adhocfilelist.htm">reload</a></i> ] </small> <h2><a name="abstract"></a>Abstract<a href="#abstract">.</a></h2> <span style="font-family:sans-serif">adhocfilelist.sh</span> is a shell script with command line options and parameters that displays ⟨<i>info</i>⟩ for files ⟨<i>file</i>⟩ on screen that (i) are indicated on the command line and (ii) contain <code>\ProvidesFile</code><code>{</code><code>⟨<i>file</i>⟩</code><code>}</code><code>[</code><code>⟨<i>info</i>⟩</code><code>]</code>, <code>\ProvidesPackage</code><code>{</code><code>⟨<i>file</i>⟩</code><code>}</code><code>[</code><code>⟨<i>info</i>⟩</code><code>]</code>, or <code>\ProvidesClass</code><code>{</code><code>⟨<i>file</i>⟩</code><code>}</code><code>[</code><code>⟨<i>info</i>⟩</code><code>]</code>. There is one line for each file, formatted about as with LaTeX’s <code>\listfiles</code>. This formatting can be varied, and the output may additionally be saved in a plain text file. The files ⟨<i>file</i>⟩ are either (a) listed explicitly, separated by commas, or (b) they are gathered by the Unix <span style="font-family:sans-serif"><a href="http://en.wikipedia.org/wiki/find" target="_blank">find</a></span> utility. For the latter, <span style="font-family:sans-serif">adhocfilelist</span> provides a somewhat simplified interface, especially for restricting the list of files to those that have been modified “today” or a few days ago. So you/I can check whether version info was updated correctly, and it may allow <a href="http://www.ctan.org/pkg/filedate" target="_blank"><span style="font-family:sans-serif">filedate</span></a> “consistency checks” even with <a href="http://www.ctan.org/pkg/xetex" target="_blank"><span style="font-family:sans-serif">XeTeX</span></a> (where <code>\pdffilemoddate</code> is unavailable). <p> The package may thus be considered an extension of the <a href="http://www.ctan.org/pkg/latexfileversion" target="_blank"><span style="font-family:sans-serif">latexfileversion</span></a> (Harald <a href="http://www.ctan.org/author/harders" target="_blank">Harders</a>) and <a href="http://www.ctan.org/pkg/typeoutfileinfo" target="_blank"><span style="font-family:sans-serif">typeoutfileinfo</span></a> packages that display ⟨<i>info</i>⟩ for a <em>single</em> file ⟨<i>file</i>⟩. Moreover, it is a somewhat simplified interface to the packages <a href="http://www.ctan.org/pkg/myfilist" target="_blank"><span style="font-family:sans-serif">myfilist</span></a>, <a href="http://www.ctan.org/pkg/longnamefilelist" target="_blank"><span style="font-family:sans-serif">longnamefilelist</span></a>, <a href="http://www.ctan.org/pkg/nicefilelist" target="_blank"><span style="font-family:sans-serif">nicefilelist</span></a>, and <a href="http://www.ctan.org/pkg/filedate" target="_blank"><span style="font-family:sans-serif">filedate</span></a>. <h2><a name="over"></a>Overview of command line contents<a href="#over">.</a></h2> The general structure of a command line using <span style="font-family:sans-serif">adhocfilelist</span> is <blockquote> <a href="#call">⟨<i>call</i>⟩</a> <a href="#opts">⟨<i>options</i>⟩</a> <a href="#files">⟨<i>files</i>⟩</a> </blockquote> The three parts are as follows: <dl> <dt><strong>⟨<i>call</i>⟩<a name="call"></a></strong><dd> This is either <ul> </li> <li>⟨<i>path</i>⟩<span style="font-family:sans-serif">adhocfilelist.sh</span> where ⟨<i>path</i>⟩ is “./” or something, depending on where you place the file <span style="font-family:sans-serif">adhocfilelist.sh</span>, or on your use of <a href="http://en.wikipedia.org/wiki/symbolic link" target="_blank">symbolic link</a>s, the environment variable <code><a href="http://en.wikipedia.org/wiki/PATH (variable)" target="_blank">PATH</a></code>, or </li> <li>an <code><a href="http://en.wikipedia.org/wiki/alias (command)" target="_blank">alias</a></code> for ⟨<i>path</i>⟩<span style="font-family:sans-serif">adhocfilelist.sh</span>. </li> </ul> <dt><strong>⟨<i>options</i>⟩<a name="opts"></a></strong><dd> Some options “switch into <strong><span style="font-family:sans-serif"><a href="http://en.wikipedia.org/wiki/find" target="_blank">find</a></span> mode</strong>”, affecting the interpretation of <strong>⟨<i>files</i>⟩</strong>, marked by “<strong>(f)</strong>”. Their description may be inaccurate here, understanding the details may require some knowledge of <span style="font-family:sans-serif">find</span> (see “<a href="#back">background</a>” below). Some options have one parameter, some have none. <dl> <dt><strong><code>-0</code></strong><dd> <strong>(f)</strong> List files modified “<strong>today</strong>” only (unless …) <dt><strong><code>-a</code> <code>⟨<i>integer</i>⟩</code></strong><dd> <strong>(f)</strong> List files modified ⟨<i>integer</i>⟩ days <strong>ago</strong> only (unless ⟨<i>integer</i>⟩ starts with “<code>-</code>” or “<code>+</code>” …) <dt><strong><code>-c</code></strong><dd> <strong>(f)</strong> Compare date according to <code>\Provides...</code> content with modification date using <a href="http://www.ctan.org/pkg/filedate" target="_blank"><span style="font-family:sans-serif">filedate</span></a> additionally. <p> <span style="color:red"><acronym>TODO</acronym></span>: The restriction to <span style="font-family:sans-serif">find</span> (v0.7) is temporary, removing it is straightforward, but I may have to postpone this for a while. <dt><strong><code>-f</code></strong><dd> <strong>(f)</strong> Add ⟨<i>files</i>⟩ to other <strong><span style="font-family:sans-serif">find</span></strong> criteria, <strong>replacing</strong> internal default settings (as opposed to <code>-g</code>). For allowing certain file name extensions such as <code>.tex</code>, the star must be escaped and ⟨<i>files</i>⟩ best has outer single quotes, such as <blockquote> <code>'-L ( -name <code>\*</code>.tex -o -name <code>\*</code>.sty )'</code> </blockquote> <dt><strong><code>-F</code> <code>⟨<i>find-file</i>⟩</code></strong><dd> <strong>(f)</strong> Add content of the <strong>file</strong> ⟨<i>find-file</i>⟩ to other <strong><span style="font-family:sans-serif">find</span></strong> criteria. As compared with <code>-f</code>, stars must be escaped, while other quoting seems not to be needed in ⟨<i>files</i>⟩. <dt><strong><code>-g</code></strong><dd> <strong>(f)</strong> Add ⟨<i>files</i>⟩ to other <strong><span style="font-family:sans-serif">find</span></strong> criteria, among which some hopefully “<strong>generally useful</strong>” are added from within <span style="font-family:sans-serif">adhocfilelist.sh</span>. As to quoting/escaping in ⟨<i>files</i>⟩, this is as with <code>-f</code>. <dt><strong><code>-h</code></strong><dd> Display an overview (brief version of present one, “<strong>help</strong>”), and ignore everything else of the command line. <dt><strong><code>-i</code> <code>⟨<i>tex-file</i>⟩</code></strong><dd> Prepend (“<strong>input</strong>”) contents of the file ⟨<i>tex-file</i>⟩ to the temporary <code>.tex</code> file that <span style="font-family:sans-serif">adhocfilelist.sh</span> generates internally — to get more individual settings than <span style="font-family:sans-serif">adhocfilelist.sh</span>’s internal defaults (which are <strong>replaced</strong> by the content of ⟨<i>tex-file</i>⟩) and than the options <code>-l</code> and <code>-n</code> provide. <dt><strong><code>-l</code> <code>⟨<i>integer</i>⟩</code></strong><dd> Format list by the <strong><a href="http://www.ctan.org/pkg/longnamefilelist" target="_blank"><span style="font-family:sans-serif">longnamefilelist</span></a></strong> package where ⟨<i>integer</i>⟩ is the maximum length of base <a href="http://en.wikipedia.org/wiki/filename" target="_blank">filename</a>s in the list (about as …) <dt><strong><code>-n</code> <code>⟨<i>filename</i>⟩</code></strong><dd> Format list by the <strong><a href="http://www.ctan.org/pkg/nicefilelist" target="_blank"><span style="font-family:sans-serif">nicefilelist</span></a></strong> package where ⟨<i>filename</i>⟩ is the longest base <a href="http://en.wikipedia.org/wiki/filename" target="_blank">filename</a> (or a template). If base filenames do <em>not</em> have more than eight characters, you can use “<strong><code>-n .</code></strong>” as a shorthand for “<code>-n</code> <code>⟨<i>filename</i>⟩</code>” with a ⟨<i>filename</i>⟩ of eight characters. <dt><strong><code>-o</code> <code>⟨<i>txt-file</i>⟩</code></strong><dd> Save the displayed file info list (“<strong>output</strong>”) as plain text file ⟨<i>txt-file</i>⟩ also. <dt><strong><code>-x</code></strong><dd> Use <code>xelatex</code> rather than <code>latex</code> (v0.7). — The idea for this has been that the script should provide “date consistency” checks (<strong>option <code>-c</code></strong>) “even with <a href="http://www.ctan.org/pkg/xetex" target="_blank"><span style="font-family:sans-serif">XeTeX</span></a> where <code>\pdffilemoddate</code> is not available.” However, the script has used <code>latex</code> before v0.7 which will run <a href="http://www.ctan.org/pkg/pdftex" target="_blank"><span style="font-family:sans-serif">pdfTeX</span></a> usually, even when the user prefers <em>typesetting</em> with XeTeX, and anyway it does not rely on <code>\pdffilemoddate</code>. The real problem with <a href="http://www.ctan.org/pkg/filedate" target="_blank"><span style="font-family:sans-serif">filedate</span></a> and XeTeX is that a reliable consistency check does not work <em>while typesetting with XeTeX</em>. But <span style="font-family:sans-serif">filedate</span> can be used for “TeX scripts” too, i.e., <em>without</em> typesetting, and that is what the present package does. The present package does <em>not</em> provide consistency checks <em>while typesetting with XeTeX</em>. It should not be make a difference whether the “TeX script” that <span style="font-family:sans-serif">adhocfilelist</span> generates is run with XeTeX or with pdfTeX. So the only “special XeTeX support” from here probably will be the present <strong><code>-x</code></strong> in case <code>latex</code> <em>does not work</em>, maybe because pdfTeX or anything implementing the <code>latex</code> command is missing on the user’s (unusual) installation. </dl> Options can <em>not</em> be “contracted” like “<code>-0f</code>” (too difficult with processing [parts of] <span style="font-family:sans-serif">find</span> expressions — <code>-name</code> …). <dt><strong>⟨<i>files</i>⟩<a name="files"></a></strong><dd> Whenever an option “switches into <span style="font-family:sans-serif"><a href="http://en.wikipedia.org/wiki/find" target="_blank">find</a></span> mode”, ⟨<i>files</i>⟩ is interpreted as part of a command line for the <span style="font-family:sans-serif">find</span> utility. Otherwise, ⟨<i>files</i>⟩ is expected to be a comma-separated list of filenames (for LaTeX source files), whose extension <code>.tex</code> (if so) may be omitted — unless <code>-h</code> … </dl> <h2><a name="required"></a>Requirements<a href="#required">.</a></h2> <dl> <dt><strong>System</strong><dd> The package will work on a <a href="http://en.wikipedia.org/wiki/Unix-like" target="_blank">Unix-like</a> system only, but I am not expert enough to judge what additional restrictions hold. As I could not make work everything that should work according to documentation, I expect the other way round that what works on my installation may not work at other Unix-like installations. If something doesn’t work at your installation, please tell me via <a href="http://contact-ednotes.sty.de.vu" target="_blank"><code>contact-ednotes.sty.de.vu</code></a>. <p> Actually the package was developed with the <a href="http://en.wikipedia.org/wiki/GNU bash" target="_blank">GNU bash</a> shell and the <a href="http://en.wikipedia.org/wiki/GNU Find Utilities" target="_blank"><abbr>GNU</abbr> <span style="font-family:sans-serif">find</span> utility</a> on <a href="http://en.wikipedia.org/wiki/Ubuntu (operating system)" target="_blank">Ubuntu</a> 10.04. <p> My impression is in fact (looking at <a href="http://en.wikipedia.org/wiki/The Open Group" target="_blank">The Open Group</a>’s <a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html" target="_blank">man page</a> for <span style="font-family:sans-serif">find</span>) that in order to use the <strong><span style="font-family:sans-serif">find</span></strong> options <strong><code>-0</code></strong>, <strong><code>-a</code></strong>, <strong><code>-f</code></strong>, <strong><code>-F</code></strong>, and <strong><code>-g</code></strong>, the <strong><abbr>GNU</abbr></strong> version of <span style="font-family:sans-serif">find</span> is required, because action <strong>-printf</strong> is used and essential (difficult without). <dt><strong>LaTeX</strong><dd> The package requires that the <a href="http://www.ctan.org/pkg/fileinfo" target="_blank"><span style="font-family:sans-serif">fileinfo</span></a> bundle is installed. In order to use the <strong><code>-l</code></strong> option, <a href="http://www.ctan.org/pkg/longnamefilelist" target="_blank"><span style="font-family:sans-serif">longnamefilelist</span></a> must be installed additionally. In order to use the <strong><code>-n</code></strong> option, <a href="http://www.ctan.org/pkg/nicefilelist" target="_blank"><span style="font-family:sans-serif">nicefilelist</span></a> must be installed additionally. In order to use the <strong><code>-c</code></strong> option, <a href="http://www.ctan.org/pkg/filedate" target="_blank"><span style="font-family:sans-serif">filedate</span></a> must be installed additionally. </dl> <h2><a name="install"></a>Installing<a href="#install">.</a></h2> No more advice than implied by the section on “<a href="#call">⟨<i>call</i>⟩</a>” can be given right now. <h2><a name="related"></a>Related packages<a href="#related">.</a></h2> The file <a href="http://mirror.ctan.org/info/latexfileinfo-pkgs/latexfileinfo_pkgs.htm" target="_blank"><span style="font-family:sans-serif">latexfileinfo_pkgs.htm</span></a> describes related packages available on <abbr><a href="http://en.wikipedia.org/wiki/CTAN" target="_blank">CTAN</a></abbr> in some detail. The most obvious ones have been mentioned above already. <p> The <a href="#back">next section</a> indicates details that may be improve understanding the LaTeX-related command line options <code>-i</code>, <code>-l</code>, and <code>-n</code>. <h2><a name="back"></a>Background<a href="#back">.</a></h2> For understanding the options <strong><code>-0</code></strong>, <strong><code>-a</code></strong>, <strong><code>-f</code></strong>, <strong><code>-F</code></strong>, and <strong><code>-g</code></strong>, knowing something about the <span style="font-family:sans-serif"><a href="http://en.wikipedia.org/wiki/find" target="_blank">find</a></span> utility and the present <a href="#back-find">interface</a> to it may be helpful. The options <strong><code>-i</code></strong>, <strong><code>-l</code></strong>, <strong><code>-n</code></strong>, and <strong><code>-o</code></strong> refer to the <a href="http://www.ctan.org/pkg/myfilist" target="_blank"><span style="font-family:sans-serif">myfilist</span></a> package and its enhancements by the packages <a href="http://www.ctan.org/pkg/longnamefilelist" target="_blank"><span style="font-family:sans-serif">longnamefilelist</span></a> and <a href="http://www.ctan.org/pkg/nicefilelist" target="_blank"><span style="font-family:sans-serif">nicefilelist</span></a>, and it may be helpful to know what a “<a href="#my-script"><span style="font-family:sans-serif">myfilist</span> script</a>” is. <dl> <dt><strong><span style="font-family:sans-serif">find</span><a name="back-find"></a></strong><dd> We are describing the <strong>interface</strong> to <span style="font-family:sans-serif"><a href="http://en.wikipedia.org/wiki/find" target="_blank">find</a></span>. To learn about the contents of a <span style="font-family:sans-serif">find</span> command line, the <a href="http://en.wikipedia.org/wiki/find" target="_blank">Wikipedia article</a> may be a good start, next enter “<code>man find</code>” in the terminal, finally see the <a href="http://gnu.org/software/findutils/manual/find.html" target="_blank"><abbr>GNU</abbr> manual</a>. <p> <span style="font-family:sans-serif">adhocfilelist.sh</span> forms the following <span style="font-family:sans-serif">find</span> command line in order to get a comma-separated list of files: <blockquote> <code>find</code> <a href="#back-f-prefix"><code>⟨<i>prefix</i>⟩</code></a> <a href="#back-f-files"><code>⟨<i>files</i>⟩</code></a> <a href="#back-f-day"><code>⟨<i>day</i>⟩</code></a> <code>-printf ,%f</code> </blockquote> These parts are as follows: <dl> <dt><strong>⟨<i>prefix</i>⟩<a name="back-f-prefix"></a></strong><dd> is <blockquote> <code>-L -maxdepth 1 ( -name <code>\*</code>.tex -o </code><code>⟨<i>more</i>⟩</code><code> )</code> </blockquote> where ⟨<i>more</i>⟩ in addition to files with extension <code>.tex</code> allows those with extensions <code>.sty</code>, <code>.cfg</code>, <code>.cls</code>, <code>.dtx</code>, <code>.def</code>, and <code>.fd</code> — <strong>unless</strong> with <strong>options</strong> <dl> <dt><strong><code>-f</code></strong><dd> where ⟨<i>prefix</i>⟩ is empty <dt><strong><code>-F</code> <code>⟨<i>find-file</i>⟩</code></strong><dd> where ⟨<i>prefix</i>⟩ is the content of the file ⟨<i>find-file</i>⟩. </dl> Option <strong><code>-g</code></strong> is not required with options <strong><code>-0</code></strong> and <strong>-a</strong> that switch into “<strong><span style="font-family:sans-serif">find</span> mode</strong>” too without deleting ⟨<i>prefix</i>⟩, it is just a way to switch into <span style="font-family:sans-serif">find</span> mode otherwise without deleting ⟨<i>prefix</i>⟩. <dt><strong>⟨<i>files</i>⟩<a name="back-f-files"></a></strong><dd> is as in the <a href="#files">overview</a>. <dt><strong>⟨<i>day</i>⟩<a name="back-f-day"></a></strong><dd> is empty, unless <strong><code>-0</code></strong> sets it to <blockquote> <code>-daystart -mtime 0</code> </blockquote> or <strong><code>-a</code> <code>⟨<i>integer</i>⟩</code></strong> sets it to <blockquote> <code>-daystart -mtime </code><code>⟨<i>integer</i>⟩</code> </blockquote> It follows that <ul> </li> <li><strong><code>-0</code></strong> has the same effect as (is just a shorthand for) <strong><code>-a 0</code></strong> </li> <li>if ⟨<i>integer</i>⟩ is “<code>-⟨<i>digits</i>⟩</code>”, files modified <em>since</em> ⟨<i>digits</i>⟩ days ago are allowed </li> </ul> —cf. <abbr>GNU</abbr> documentation on <a href="http://gnu.org/software/findutils/manual/html_node/find_html/Age-Ranges.html" target="_blank">age ranges.</a> <p> A <strong>tricky</strong> little thing here is that ⟨<i>day</i>⟩ may be <em>expected</em> to be a <em>restriction</em>, an <em>additional</em> criterion that a LaTeX source file must meet to be listed. However, if ⟨<i>files</i>⟩ ends on <strong><code>-o</code></strong> for “or”, ⟨<i>day</i>⟩ becomes an “additional possibility” for being listed … <p> <span style="color:red"><acronym>TODO</acronym></span>: This is different with <strong>option <code>-c</code></strong> (v0.7) whose functionality also may change soon. </dl> <dt><strong><span style="font-family:sans-serif">myfilist</span><a name="my-script"></a></strong><dd> The LaTeX package <a href="http://www.ctan.org/pkg/myfilist" target="_blank"><span style="font-family:sans-serif">myfilist</span></a> provides some commands to control the input of LaTeX’s <code>\listfiles</code> so that its output is not a list of files used for typesetting, but a list of arbitrary files that is determined by commands like <blockquote> <code>\ReadFileInfos</code><code>{</code><code>⟨<i>comma-separated-list-of-filenames</i>⟩</code><code>}</code> </blockquote> Essentially this is the command which the list of filenames that was ⟨<i>files</i>⟩ or that is produced by <span style="font-family:sans-serif">find</span> is passed to. The list is generated by running a <code>.tex</code> file that contains these commands. Such a file has been called a “<strong><span style="font-family:sans-serif">myfilist</span> script</strong>” here. More precisely, such a script is (mostly) structured as follows: <blockquote> <a href="#back-load-set">⟨<i>loading-settings</i>⟩</a><br> <a href="#back-coll-infos">⟨<i>collecting-infos</i>⟩</a><br> <a href="#back-write">⟨<i>writing-to-screen+file</i>⟩</a> </blockquote> These parts are as follows: <dl> <dt><strong>⟨<i>loading-settings</i>⟩<a name="back-load-set"></a></strong><dd> at least issues <code>\RequirePackage</code><code>{</code><code>⟨<i>myfilist</i>⟩</code><code>}</code>. By default, <span style="font-family:sans-serif">adhocfilelist.sh</span> produces (roughly) <blockquote> <code>\RequirePackage</code><code>{myfilist}</code><code>\EmptyFileList</code> <code>⟨<i>adhoc-adjust</i>⟩</code> </blockquote> for ⟨<i>loading-settings</i>⟩ where ⟨<i>adhoc-adjust</i>⟩ adds technical details needed for use with <span style="font-family:sans-serif">adhocfilelist</span>. (Final warnings are suppressed by a command <code>\NoBottomLines</code>, this might be changed in the future.) <p> It has been a disadvantage of LaTeX’s <code>\listfiles</code> functionality that the resulting plain text file list looked good with base filenames only that had up to eight characters. <a href="http://www.ctan.org/pkg/longnamefilelist" target="_blank"><span style="font-family:sans-serif">longnamefilelist</span></a> made up for this disadvantage, and <a href="http://www.ctan.org/pkg/nicefilelist" target="_blank"><span style="font-family:sans-serif">nicefilelist</span></a> has additional refinements of aligning the list, proposed by Martin <a href="http://www.ctan.org/author/muench-hm" target="_blank">Münch</a>. To use them with <span style="font-family:sans-serif">myfilist</span>, they are loaded in ⟨<i>loading-settings</i>⟩ as well, and additional settings for column widths may be added there too. This is what <strong>options</strong> <strong><code>-l</code></strong> and <strong><code>-n</code></strong> do. Besides in their own <abbr>PDF</abbr> documentation (that you find by following the links), the packages are also briefly described in that file <a href="http://mirror.ctan.org/info/latexfileinfo-pkgs/latexfileinfo_pkgs.htm" target="_blank"><span style="font-family:sans-serif">latexfileinfo_pkgs.htm</span></a> to be read by a web browser. <p> However, more refined settings may be needed that cannot be controlled by <span style="font-family:sans-serif">adhocfilelist</span>’s interface so far. The <strong>option</strong> <strong><code>-i</code> <code>⟨<i>tex-file</i>⟩</code></strong> has the effect that ⟨<i>loading-settings</i>⟩ becomes <blockquote> ⟨<i>tex-file-content</i>⟩ ⟨<i>adhoc-adjust</i>⟩ </blockquote> where ⟨<i>tex-file-content</i>⟩ is the content of the (<code>.tex</code> file) ⟨<i>tex-file</i>⟩ (before <code>\endinput</code>). <dt><strong>⟨<i>collecting-infos</i>⟩<a name="back-coll-infos"></a></strong><dd> essentially is that <blockquote> <code>\ReadFileInfos</code><code>{</code><code>⟨<i>comma-separated-list-of-filenames</i>⟩</code><code>}</code> </blockquote> mentioned above. <dt><strong>⟨<i>writing-to-screen+file</i>⟩<a name="back-write"></a></strong><dd> essentially is <code>\ListFileInfos</code> or <blockquote> <code>\ListFileInfos</code><code>[</code><code>⟨<i>txt-file</i>⟩</code><code>]</code> </blockquote> With <span style="font-family:sans-serif">adhocfilelist</span>, that “<code>[</code><code>⟨<i>txt-file</i>⟩</code><code>]</code>” is inserted on <strong>option</strong> <strong><code>-o</code> <code>⟨<i>txt-file</i>⟩</code></strong>. </dl> However, <span style="font-family:sans-serif">myfilist</span> has been extended at the occasion of preparing <span style="font-family:sans-serif">adhocfilelist</span> so that the sections ⟨<i>collecting-infos</i>⟩ and ⟨<i>writing-to-screen+file</i>⟩ may “collapse” into a single command starting with <code>\ReadListFileInfos</code>. </dl> <h2><a name="custom"></a>General customization<a href="#custom">.</a></h2> In general, options <strong><code>-F</code> <code>⟨<i>find-file</i>⟩</code></strong> and <strong><code>-i</code> <code>⟨<i>tex-file</i>⟩</code></strong> will be needed to deal with certain directories ⟨<i>dir</i>⟩. Two ways come to my mind how to simplify this situation. <ol> </li> <li>⟨<i>find-file</i>⟩ and ⟨<i>tex-file</i>⟩ may be in the same directory ⟨<i>dir</i>⟩, and the latter may es well contain an executable (<code><a href="http://en.wikipedia.org/wiki/chmod" target="_blank">chmod</a></code>) script file ⟨<i>script-file</i>⟩ with the following content: <blockquote> <a href="#call"><code>⟨<i>call</i>⟩</code></a> <code>-F </code><code>⟨<i>find-file</i>⟩</code> <code>-i </code><code>⟨<i>tex-file</i>⟩</code> <code>⟨<i>more</i>⟩</code> <code>$@</code> </blockquote> Here ⟨<i>call</i>⟩ is as in the <a href="#call">overview</a>, and ⟨<i>more</i>⟩ may be empty or something else that you want to have fixed, such as <strong><code>-o</code> <code>⟨<i>txt-file</i>⟩</code></strong>. <p> <strong>Then</strong> you can <strong>vary</strong> additional options/parameters ⟨<i>add</i>⟩ by <blockquote> <code>./</code><code>⟨<i>script-file</i>⟩</code> <code>⟨<i>add</i>⟩</code> </blockquote> </li> <li>If you have <strong>several directories</strong> ⟨<i>dir</i>⟩ as before of a certain “type”, such that they can <strong>share</strong> the settings in ⟨<i>find-file</i>⟩ and ⟨<i>tex-file</i>⟩, you can place the latter in some separate (“central”) directory ⟨<i>center</i>⟩ and define an <code><a href="http://en.wikipedia.org/wiki/alias" target="_blank">alias</a></code> as follows: <blockquote> <code>alias </code><code>⟨<i>name</i>⟩</code><code>='</code><a href="#call"><code>⟨<i>call</i>⟩</code></a> <code>-F </code><code>⟨<i>center</i>⟩</code><code>/</code><code>⟨<i>find-file</i>⟩</code> <code>-i </code><code>⟨<i>center</i>⟩</code><code>/</code><code>⟨<i>tex-file</i>⟩</code> <code>⟨<i>more</i>⟩</code><code>'</code> </blockquote> (Note that there is no “<code>$@</code>”. “<code>⟨<i>dir</i>⟩</code><code>/</code><code>⟨<i>tex-file</i>⟩</code>” could be replaced by mere “<code>⟨<i>tex-file</i>⟩</code>” if that ⟨<i>tex-file</i>⟩ is installed like a TeX package.) <p> <strong>Then</strong> you can <strong>vary</strong> additional options/parameters ⟨<i>add</i>⟩ by <blockquote> <code>⟨<i>name</i>⟩</code> <code>⟨<i>add</i>⟩</code> </blockquote> </li> </ol> <h2><a name="idea"></a>The idea/motivation; acknowledgements<a href="#idea">.</a></h2> One day (most probably 2012-09-27), I wanted to check the <code>\ProvideFile</code> contents of <em>two</em> files I knew I had edited that day. On 2012-09-26, I had thought about simplifying <a href="http://www.ctan.org/pkg/typeoutfileinfo" target="_blank"><span style="font-family:sans-serif">typeoutfileinfo</span></a> by using a single command line without any piping. I realized that LaTeX s <code>\typeout</code> could be replaced by <code>\ReadFileInfos</code> from <a href="http://www.ctan.org/pkg/myfilist" target="_blank"><span style="font-family:sans-serif">myfilist</span></a>. Therefore “<a href="http://en.wikipedia.org/wiki/ad hoc" target="_blank">ad hoc</a>”. <p> Maybe the same day later, I realized that I could no longer remember which files I changed that day. In July I had discovered <code>$(find ...)</code>. Now I thought that this could be used here. “Ad hoc” is less appropriate here, and first I thought that there will be different script files for explicitly specified files than for applying <span style="font-family:sans-serif">find</span>. <p> Only then I learnt real shell programming by googling, kind of chance, and most helpfully from Chapter 3 of Jürgen Wolfs <a href="http://openbook.galileocomputing.de/shell_programmierung" target="_blank">OpenBook</a> from <a href="http://de.wikipedia.org/wiki/Galileo Press" target="_blank">Galileo Press</a> (<code><a href="http://en.wikipedia.org/wiki/getopts" target="_blank">getopts</a></code> — bad here, however) and Prof. Jürgen Plates <a href="http://netzmafia.de/skripten/unix/unix8.html" target="_blank">lecture notes</a> (“Optionen ermitteln” — “by hand”). <p> Then quoting/escaping for filename extensions with <span style="font-family:sans-serif"><a href="http://en.wikipedia.org/wiki/find" target="_blank">find</a></span> became difficult … Quotation marks and “positional parameters” with the shell are very difficult/<strong>painful</strong> — TeX is more straightforward … On the other hand it is nice that the entire command line with <em>all</em> the “parameters” is gobbled. <hr> <p align="right"><i>Last revised 2013-01-04 © <a href="http://www.webdesign-bu.de/uwe_lueck/contact.html" target="_blank">Uwe Lück</a><br> (using <a href="http://www.ctan.org/pkg/morehype" target="_blank"><span style="font-family:sans-serif">blog.sty</span></a>)<br> License: <a href="http://www.latex-project.org/lppl/" target="_blank">LPPL 1.3c</a> or later, author-maintained.</i></p> <p align="right"><a href="#top-of-page">[<i>→ top of page</i> ]</a></p> <table width="" height="240" border="0" cellpadding="0" cellspacing="0"><tbody> <!-- HVspace --> <tr valign="top"><td></td> </tr> </tbody></table> </body></html>