我知道有很多包可以修改的输出\listfiles
。但是,我想将此列表打印到 pdf 中,而不是日志文件中。
这对于我的模板文档来说很有意义,我想按加载顺序添加模板中使用的所有文件的列表。
答案1
只是向您指出一个包,但dateiliste
可能适合:
该命令\printFileList
有一个可选的分段参数,用于指定文件列表要出现在哪种类型的文档块中,例如\printFileList[\section]
。它还有一些您可以设置的参数:
\fileListName - title ("List of Files")
\fileListPreamble - preamble (typeset before the table)
\fileNameName - table header "file name"
\dateName - table header "date"
\verName - table header "version"
\descriptionName - table header "description"
最小示例(如果您不想要页码,请使用可选的 调用该包\usepackage[noshowpage]{dateiliste}
):
\documentclass{article}
\usepackage{mathtools}
\usepackage{dateiliste}
% \usepackage[noshowpage]{dateiliste}
\listfiles
\begin{document}
\printFileList
\end{document}
编辑:如果该noshowpage
选项不能完全解决问题,您还有其他几个选择:
(1)您可以缩短“版本”列标题,方法是\def\verName{ver.}
(2)您可以编辑 的第 172-173 行dateiliste.sty
。第 173 行指定了描述列的格式。您可以将其从当前
\string\raggedright\string\arraybackslash}X}
到,
\string\small\string\raggedright\string\arraybackslash}X}
以减少该列文本的大小。此外,如果您不介意将第 1 列中的长文件名拆分,您可以编辑第 172 行
\string\begin{longtable}{\@tempa>{%
其中\@tempa
,包含lrll
或lll
来指定列对齐方式(取决于您是否调用了noshowpages
,以
\string\begin{longtable}{p{3cm}ll>{%
可以p{3cm}
进行调整以仅分解最长的文件名。
答案2
这实际上是从latex.ltx
并包裹在\printfiles
:
\listfiles
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{geometry}% http://ctan.org/pkg/geometry
\makeatletter
\def\printfilelist{%
\begingroup
\ttfamily%
\par*File List* \par
\@for\@currname:=\@filelist\do{%
\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
\expandafter\expandafter\expandafter\@listfiles\expandafter
\filename@area\filename@base\\\\\\\\\\\\\\\\\\\@@
\filename@area\reserved@a
\ifx\reserved@b\relax\else\@spaces\reserved@b\fi\par}
***********\par
\endgroup%
}
\makeatother
\begin{document}
abc
\printfilelist
\end{document}
文件列表表示当前ScribTeX(在 TeX Live 2009 下)。