subfiles
我正在使用包含主文档的包main.tex
,其中包含main.tex
:
\subfile{file1.tex}
\subfile{file2.tex}
我在里面定义了一些命令main.tex
\usepackage{todonotes}
\newcommand{\todoiteminline}[3]{
\todoitemtemplate{#1}{#2}{#3}{inline}{red}
}
但是当我编译整个项目时,这些命令在子文件中无法识别。错误在于undefined control sequence
我使用命令的地方todoiteminline
。
如何在每个子文件中使用此命令?
答案1
在主文件中定义命令是可以的,在子文件中也可以使用。例如
\newcommand{\todoiteminline}[3]{
\textcolor{red}{#1}
\textcolor{blue}{#3}
\textcolor{green}{#3}
}
\todoitemtemplate
但是,您尝试在中使用的命令\newcommand
不存在,因此您的自定义命令\todoiteminline
将导致undefined control sequence
错误,因为它尝试使用\todoitemtemplate
。
通过适当的定义,\todoitemtemplate
您的定义应该可以在主文件和子文件中正常工作。
答案2
当仅编译子文件时,只有在创建该命令时才可知前言主文件。
工作 main.tex 摘录:
\newcommand{\todoiteminline}[3]{
\textcolor{red}{#1}
\textcolor{blue}{#3}
\textcolor{green}{#3}
}
\begin{document}
失败的 main.tex 摘录:
\begin{document}
\newcommand{\todoiteminline}[3]{
\textcolor{red}{#1}
\textcolor{blue}{#3}
\textcolor{green}{#3}
}
如果主文件编译通过,而子文件本身却没有编译通过,则这可能是原因。
如果主文件由于此命令而无法编译,考虑 samcarter 的回答您定义的命令\todoiteminline
从未被定义过。那么,该问题与 subfiles 包无关。