(可能与这个问题。
pdflatex
以下 MCE 的每个编译:
\begin{filecontents}[overwrite]{subfile.tex}
\documentclass{article}
\newcommand\mycolon{:}
\begin{document}
Foo.
\end{document}
\end{filecontents}
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[subpreambles]{standalone}
\usepackage{babel}
\begin{document}
\input{subfile.tex}
\end{document}
导致:
独立软件包警告:文件“subfile.tex”的子序言已更改。内容将被忽略。请在输入行 7 重新运行 LaTeX!
但文件 'subfile.tex' 的子序言显然没有改变。这个问题可能与以下原因有关:
- 在
\newcommand\mycolon{:}
子文件的前言中,如果将其移动到文档主体中,则不会再发出警告, - 使用
babel-french
,因为如果主文件中的选项被删除,则不再发出警告;这可能与文档开头的冒号 ( ) 激活french
有关。:
babel-french
即使我可以通过移动\newcommand\mycolon{:}
到文档主体来解决这个问题,您是否了解发生了什么以及如何使整个工作与两者一起工作:
\newcommand\mycolon{:}
在序言中,babel-french
正在行动?
答案1
解释很简单: 的定义\mycolon
发生了变化。在 subfile.tex 中,它扩展为字符:
( catcode 12
),而在主文件中,它扩展为命令:
( catcode 13
)。
使用 LuaLaTeX 或 XeLaTeX 进行编译时不会发生此 catcode 更改(当然\usepackage[T1]{fontenc}
必须删除)。使用这些格式,您的文件可以按预期进行编译。