不同章节及子文件中命令的定义不同

不同章节及子文件中命令的定义不同

我有一个使用子文件创建的 LaTeX 项目,其中包含多个嵌套目录。层次结构中最底层的目录之外的每个目录都包含一个 main.tex 文件,该文件从下层文件夹导入 main.tex 文件。下面显示了我的意思的一个示例:

├── main.tex
├── chapter1/
│   ├── main1.tex
│   └── sectiona/
│       └── main1a.tex
└── chapter2/
    ├── main2.tex
    └── sectiona/
        └── main2a.tex

在此示例中,main.tex 将包含 main1.tex 和 main2.tex 作为子文件,main1.tex 将包含 main1a.tex 作为子文件,而 main2 将包含 main2a.tex 作为子文件。

我想要一个在不同的章节中有不同定义的命令(在我的具体情况下,我想要一个 \myvector 命令,它在一个章节中是 \overrightarrow,在另一个章节中是 \mathbf)。

我的第一个想法是在 main1.tex 和 main2.tex 的前言中以不同的方式定义命令,然后分别将 main1a.tex 和 main2a.tex 定义为 main1.tex 和 main2.tex 的子文件(使用 \documentclass[../main1]{subfiles} 或 \documentclass[../main2]{subfiles}),然后将 main1.tex 和 main2.tex 定义为 main.tex 的子文件(使用 \documentclass[../main]{subfiles})。但是,这会出现错误:! LaTeX Error: Option clash for document class subfiles.。如果我直接将 main1a.tex 和 main2a.tex 作为 main.tex 的子文件(使用 \documentclass[../../main]{subfiles}),则不会出现此错误,但在这种情况下,如果我单独编译 main1a.tex 或 main2a.tex,它将不会在 main1.tex 或 main2.tex 的前言中看到命令定义。

有没有办法以不同的方式定义 chapter1 和 chapter2 命令,而不必在这些目录中的每个文档中定义它?

答案1

您可以尝试定义一次命令并使用其中的一些计数器检查,但每一章您都可以将计数器设置为新值。

\documentclass{article}
\usepackage{etoolbox}
\newcounter{vectortype}
\setcounter{vectortype}{3}

\newcommand{\myvector}[1]{
\ifnumequal{\value{vectortype}}{1}{%
\overrightarrow{#1}%
}{}
\ifnumequal{\value{vectortype}}{2}{%
\mathbf{#1}%
}{}
\ifnumequal{\value{vectortype}}{3}{%
Ola! #1%
}{}
}

\begin{document}

\(\myvector{AB}\)

\section{Chapter A}
\setcounter{vectortype}{1}

\(\myvector{AB}\)

\section{Chapter B}
\setcounter{vectortype}{2}

\(\myvector{AB}\)

\section{Chapter C}
\setcounter{vectortype}{1}

\(\myvector{AB}\)

\end{document}

相关内容