源文件的允许文件名

源文件的允许文件名

包含(\include)的文件名中可能出现哪些字符?

连字符和下划线可以吗?包含的内容是否依赖于底层文件系统或 LaTeX 源的编码?是否只允许使用 ASCII 字符?

答案1

文件名语法是 TeX 中少数几个明确依赖于系统的部分之一。基于 web2c 的 TeX 系统允许使用文件系统允许的大多数字符。(例如,如果用"引号括住整个路径,则允许使用空格)。

请注意,例如 LaTeX不是假设扩展名(基本名称)由附加扩展名组成.。某些系统不允许这样的名称,通常称为的文件article.cls可能位于article目录中cls[cls]article任何其他各种语法可能性中。该文件textsys.cfg在格式化时被读取,默认情况下会自动确定以下内容:

 This file contains the site specific definitions of the four macros\\
 |\@currdir|, |\input@path|, |\filename@parse| and |\@TeXversion|.

但可以在本地定义为任何适合系统的内容。

请注意,特殊字符可能需要特殊处理才能传递给文件名读取器。例如,~允许使用字符,但 LaTeX 通常会为其提供扩展后的定义,而\nobreakspace{}这不是文件名的预期解释。\string~但可以。请参阅这个问题有关如何处理文件名中的空格的说明。类似的问题与非 ascii 字符有关。如果使用经典 TeX(而不是 xetex/luatex),8 位字符将获得专为排版而不是用作文件名字符串。此外,文件系统可能使用 utf8 或使用本地代码页,而 LaTeX 可能不知道到底是哪种(web2c 系统的底层文件 IO 大概知道,但 TeX 宏无法访问),因此您可能必须再次使用输入“逐字”使用\string或某种等效引用方法,以便将字节直接传递给底层文件名读取器。这一切都取决于……

相关内容