Filecontents 和 Filecontents* 之间的区别以及何时使用其中一个而不是另一个

Filecontents 和 Filecontents* 之间的区别以及何时使用其中一个而不是另一个

我最近一直在尝试用不同的符号替换索引中的逗号。以下代码将上述逗号替换为空格。

\begin{filecontents}{\jobname.mst}
%delim_0 " $a$  "
delim_0 " $ $  "
%delim_1 " $b$  "
delim_1 " $ $  "
%delim_2 " $c$  "
delim_2 " $ $  "
delim_n ","
\end{filecontents}

\documentclass{book}
\let\cleardoublepage\clearpage
\usepackage{makeidx}
\usepackage{idxlayout}
\makeindex

\begin{document}
Some words.\index{entryA}
Some words.\index{entryB!subentry}
\idxlayout{columns=1}
\printindex
\end{document}

产生索引输出:

在此处输入图片描述

评论:我也运行了上面的代码,使用filecontents*它来代替filecontents,输出看似相同。

filecontents问题:有人可以解释一下和之间的区别吗filecontents*?以及什么时候建议使用其中一个而不是另一个?

谢谢。

答案1

filecontents(及其星号版本)是 LaTeX 内核的一部分,但最初作为单独的软件包发布,名为filecontents. 因此,从其文档

filecontents工作原理与 非常相似verbatim,只是它接受一个强制的文件名参数:

\begin{filecontents}{myfile.tex}
This text gets written to \texttt{myfile.tex}.
\end{filecontents}

上述代码将写入一个 myfile.tex 文件,其内容类似于以下内容:

%% LaTeX2e file `myfile.tex'
%% generated by the `filecontents' environment
%% from source `mydocument' on 2001/07/31.
%%
This text gets written to \texttt{myfile.tex}.

myfile.tex\include然后可以使用或 重新合并到文档中\input。如果filecontents*使用 而不是filecontents,文件将只包含“ This text gets written to \texttt{myfile.tex}.”行。filecontents*因此,对于编写非 LaTeX 文件(如封装的 PostScript 文件)非常有用。

另一个用例filecontents*来自编写列表,其中 TeX 注释可能看起来不合适,或者语法完全不同。

我个人更喜欢,filecontents*因为注释的描述没有提供任何不能合并到文件名中的内容,例如(如20010731_myfile.tex)。

相关内容