diff options
author | Karl Berry <karl@freefriends.org> | 2009-05-22 23:51:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-05-22 23:51:44 +0000 |
commit | 566f5207d7e3cafb0633d31277067336ccd9cca7 (patch) | |
tree | 7af53e7ac405185168bc1dc38c4e820f442b78d0 /Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-filename.html | |
parent | b0beea26ffffd915bb6d9b82f2d65a0a05b7e23b (diff) |
move generic english documents out of texmf-doc
git-svn-id: svn://tug.org/texlive/trunk@13396 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-filename.html')
-rw-r--r-- | Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-filename.html | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-filename.html b/Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-filename.html new file mode 100644 index 00000000000..3937df6fbcc --- /dev/null +++ b/Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-filename.html @@ -0,0 +1,94 @@ +<head> +<title>UK TeX FAQ -- question label filename</title> +</head><body> +<h3>What’s the name of this file</h3> +<p/>One might want this so as to automatically generate a page header or +footer recording what file is being processed. It’s not easy... +<p/>TeX retains what it considers the name of the <em>job</em>, only, in +the primitive <code>\</code><code>jobname</code>; this is the name of the file first +handed to TeX, stripped of its directory name and of any extension +(such as <code>.tex</code>). If no file was passed (i.e., you’re using +TeX interactively), <code>\</code><code>jobname</code> has the value <code>texput</code> +(the name that’s given to <code>.log</code> files in this case). +<p/>This is fine, for the case of a small document, held in a single file; +most significant documents will be held in a bunch of files, and +TeX makes no attempt to keep track of files input to the +<em>job</em>. So the user has to keep track, himself — the only way +is to patch the input commands and cause them to retain details of the +file name. This is particularly difficult in the case of Plain TeX, +since the syntax of the <code>\</code><code>input</code> command is so peculiar. +<p/>In the case of LaTeX, the input commands have pretty regular +syntax, and the simplest <a href="FAQ-patch.html">patching techniques</a> can be +used on them. +<p/>If you’re not inputting things from a file that’s already been input, +the job is almost trivial: +<blockquote> +<pre> +\def\ThisFile{\jobname} +\let\OldInput\input +\renewcommand{\input}[1]{% + \renewcommand{\ThisFile}{#1}% + \OldInput{#1}% +} +</pre> +</blockquote><p> +With that, the macro <code>\</code><code>ThisFile</code> always contains the last thing +input: it starts pointing at the base file of your document +(<code>\</code><code>jobname</code>), and thereafter changes every time you use +<code>\</code><code>input{</code><em>file</em><code>}</code>. +<p/>Most ordinary users will quickly become irritated with the simplicity +of of the <code>\</code><code>ThisFile</code> mechanism above. The following code is more +cunning: it maintains details of the files you’ve ‘come through’ to +get to where you are, and it restores <code>\</code><code>ThisFile</code> to what the +previous file was before returning. +<blockquote> +<pre> +\def\ThisFile{\jobname} +\newcounter{FileStack} +\let\OrigInput\input +\renewcommand{\input}[1]{% + \stackinput{#1}{\OrigInput}% +} +\newcommand{\stackinput}[2]{% + \stepcounter{FileStack}% + \expandafter\let + \csname NameStack\theFileStack\endcsname + \ThisFile + \def\ThisFile{#1}% + #2{#1}% + \expandafter\let\expandafter + \ThisFile + \csname NameStack\theFileStack\endcsname + \addtocounter{FileStack}{-1}% +} +</pre> +</blockquote><p> +To do the same for <code>\</code><code>include</code>, we need the simple addition: +<blockquote> +<pre> +\let\OrigInclude\include +\renewcommand{\include}[1]{% + \stackinput{#1}{\OrigInclude}% +} +</pre> +</blockquote><p> +Both examples of patching <code>\</code><code>input</code> assume you always use +LaTeX syntax, i.e., always use braces around the argument. +<p/>The <i>FiNK</i> (“File Name Keeper”) package provides a +regular means of keeping track of the current file name (with its +extension), in a macro <code>\</code><code>finkfile</code>. If you need the unadorned file +name (without its ‘<code>.tex</code>’), use the commands: +<blockquote> +<pre> +\def\striptexext#1.tex{#1} +... +\edef\ThisFile{\expandafter\stripext\finkfile} +</pre> +</blockquote><p> +The <i>FiNK</i> bundle includes a <i>fink.el</i> that provides +support under <i>emacs</i> with AUC-TeX. +<dl> +<dt><tt><i>fink.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/fink.zip">macros/latex/contrib/fink</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/fink.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/fink/">browse</a>) +</dl> +<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=filename">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=filename</a> +</body> |