命名 LaTeX 文件:最佳实践?

命名 LaTeX 文件:最佳实践?

命名 LaTeX 文件的最佳做法是什么?

.我知道 R、Matlab 和 Java 在、_、 、驼峰式大小写、大写等方面的使用都有所不同。-人们通常用什么来命名 LaTeX 文件?这是否易于跨系统移植?

我记得在解释我的 Matlab 程序时遇到了一个大问题。原来是我以 Matlab 无法处理的方式命名了文件。为了避免将来出现此类问题,我只想开始使用最佳实践来命名我的 LaTeX 文件。

答案1

这在一定程度上取决于这些文件是否仅由您使用,以及您是否计划与其他人共享它们,例如,如果您在一个文档上使用它们,或者这些文件是 LaTeX 包的一部分。

但一般来说,我强烈建议你限制使用小写字母数字 ASCII 字符,即az、0-9 和-

原因如下:

  • Unicode 或其他非 ASCII 字符在复制到具有不同代码页的不同文件系统时可能会造成麻烦。我遇到过甚至无法Linux 安装的 Windows 共享上带有德语变音符号的文件。现在情况好多了,但仍然有风险。普通的 TeX 也不太喜欢非 ASCII 字符。
  • 某些文件系统 (FS) 区分大小写(例如 *nix FS),而其他文件系统则不区分大小写(例如 FAT、NTFS)。如果将文件名全部保持小写,则可以避免文件之间的冲突,而这种冲突可能会导致在从区分大小写的 FS 复制到不区分大小写的 FS 时丢失数据。此外,当实际文件名的大小写与硬盘上的大写不同时,您会在区分大小写的系统上遇到麻烦。您可能没有意识到这一点,例如在 Windows 上,但它会在不同的 FS 上给您带来严重影响。
  • TeX 中的特殊字符只要在此位置有效就会起作用,这排除了%#。其他 as&也会引起麻烦,而且没有真正的理由使用它们,因此请避免使用它们。即使_是常用的并且可以在内部工作的 ,\input在需要打印文件名时也会引起麻烦,因此也请避免使用它。
  • 文件名中的空格也是“邪恶的”,因为一些外部工具会将它们作为文件名分隔符。TeX 应该可以接受它们,除非它们连续使用多次。然后 TeX 会将它们合并为一个,然后再解释为文件名!
  • 点会混淆 LaTeX 使用的简单扩展提取算法。请参阅这个问题举个例子。

我正在努力让软件包允许使用任意文件名。这是使用逐字模式完成的,但对于其他输入宏(如、或 )svn-multi没有帮助。\input\include\includegraphics

答案2

建议您仅使用 ASCII 字母和一些标点符号;避免在文件名中使用空格、重音符号/Unicode 字母和多个句点。好的:

  • filename.tex
  • file-name.tex
  • FileName.tex

您可能会遇到以下问题:

  • file name.tex
  • file.name.tex
  • fîlénåmè.tex

(我会谨慎行事并避免、、、_等等,但有时它们也会发挥很好的作用。这取决于情况!)*&%#

答案3

严格来说,这不是你想要的答案,但这里有一个对我有用的技巧。在我所有的项目中,我都遵循一个非常严格的方案:

  1. 主文件被命名为00.tex,这使得它在目录列表中首先显示。
  2. 这个主文件输入了000.tex所有的定义,包等。
  3. 摘要存放在名为abstract.tex
  4. 介绍在名为的文件中introduction.tex(我放弃了与 8.3 操作系统的可比性)
  5. 轮廓保持在00.tex
  6. 最后/结论/讨论部分放在名为zz.tex
  7. 所有其他部分都放在名称为单个小写英文单词的文件中。(这让不太智能的拼写检查器更容易检查)。如果更改了部分名称,则包含它的文件的名称将不是改变。

现在,主文件已设置为显示文档结构,而不显示其他任何内容,例如,

\documentclass{article}
\input{000}
\author{U. K. Owen}
\title{Ten Little Darker Skin Human Beings}
\begin{document}
\maketitle
\begin{abstract}
  \input{abstract}
\end{abstract}

\section{Introduction}
\input{introduction}

\paragraph{Outline} The remainder of this manuscript is organized as follows.
 Section~\ref{Section:defs} makes some definitions. 
 The results are presented in Section~\ref{Section:results}.
 Section~\ref{final} concludes.

\section{Definitions}
\label{Section:defs}
\input{definitions}

\section{Results}
\label{Section:results}
\input{results}

\section{Conclusions, Discussion, and Further Research}
\label{Section:final}
\input{zz}

\end{document}

按照这种方案,可以释放那些忙于文件命名问题的神经元,以处理真正重要的事情。

答案4

Will 列出的规则很好;以下是一些技术补充:

  • 所有现代操作系统和文件系统都可以处理文件名中的任意 Unicode 字符。
  • 操作系统有时区分大小写,有时不区分大小写;但现代操作系统始终保留大小写。这意味着,如果您请求名为 的文件,A您可能会得到名为A或 的文件a,但如果您创建一个名为 的新文件A,则永远不会得到名为 的文件a
  • 操作系统有时会保持规范化,有时则不会。
  • 大多数 TeX 引擎都可以处理任意输入文件名,只要能从\jobname中构造一个有效的文件名即可;但是,没有正式的定义,因此如果您想保持可移植性,最好坚持使用已知有效的方法。
  • 二级文件的名称(例如,由\input或包含\includegraphics)带有空格或多个空格通常会导致问题,因为 LaTeX 内核和软件包假定每个文件名中没有空格,最多只有一个点。诸如 之类的软件包grffile修复了一些问题。

相关内容