通过引用其他章节的部分内容来创建章节

通过引用其他章节的部分内容来创建章节

我正在尝试通过引用其他章节的某些部分来创建一个章节或节。

例如:

“他去上学”

这里的“学校”可以是

  • 商学院,
  • 法学院,
  • ETC。

“她要去看电影”

这里的电影可以

  • 浪漫喜剧
  • 恐怖,
  • 科幻,
  • ETC。

所以在这里,我想引用学校和电影,这样它们就会出现在新的章节或部分中,就像这样

  1. 学校——商学院、法学院等。
  2. 电影 - 浪漫/喜剧、恐怖、科幻等。

由于这些操作很多,因此手动操作非常繁琐。

有没有办法使用一些命令自动完成此操作?

任何帮助都将受到赞赏。

答案1

我不确定我是否完全理解了这个问题,但由于我们中至少有两个人有类似的解释,所以我将我的评论转换为答案。

您应该为每个可能发生变化的组件定义宏,然后根据需要使用这些宏的值。


方法 1:

例如,使用您给出的示例,您可以定义宏\School来包含学校类型,并在句子中使用它。因此,在这里我初始化一个空值\School以及它将要使用的句子:

\newcommand*{\School}{}
\newcommand*{\SchoolSentence}{He goes to \School.}

因此,无论何时想要使用它,首先要确保\School在使用之前设置了的值\SchoolSentence

\renewcommand*{\School}{Business School}
\SchoolSentence

\renewcommand*{\School}{Harvard Law School}
\SchoolSentence

产生

他就读于商学院。

他就读于哈佛法学院。

您还可以构造包含更多变量的表达式。例如:

\newcommand*{\Movie}{}
\newcommand*{\Person}{}
\newcommand*{\MovieSentence}{\Person\ is going to watch \Movie.}

您可以将其用作:

\renewcommand*{\Person}{Uncle Owen}
\renewcommand*{\Movie}{The Empire Strikes Back}
\MovieSentence

欧文叔叔要去看《帝国反击战》。

笔记:

  • 需要尾随反斜杠来\Person\确保该宏的值后面有一个空格。

方法 2:

解决这个问题的另一种方法是将学校名称视为参数。因此,将\SchoolSentence被定义为接受一个参数([1]),并使用#访问第一个参数的值:

\newcommand*{\SchoolSentence}[1]{He goes to #1.}

类似地,我们可以定义\MovieSentence需要两个参数:

\newcommand*{\MovieSentence}[2]{#1 is going to watch #2.}

使用如下方法可得到与上述相同的结果:

\SchoolSentence{Business School}

\SchoolSentence{Harvard Law School}

\MovieSentence{Uncle Owen}{The Empire Strikes Back}

代码(方法 1):

\documentclass{article}

\newcommand*{\School}{}
\newcommand*{\SchoolSentence}{He goes to \School.}

\newcommand*{\Movie}{}
\newcommand*{\Person}{}
\newcommand*{\MovieSentence}{\Person\ is going to watch \Movie.}

\begin{document}
\renewcommand*{\School}{Business School}
\SchoolSentence

\renewcommand*{\School}{Harvard Law School}
\SchoolSentence

\renewcommand*{\Person}{She}
\renewcommand*{\Movie}{The Shinning}
\MovieSentence

\renewcommand*{\Person}{Uncle Owen}
\renewcommand*{\Movie}{The Empire Strikes Back}
\MovieSentence

\end{document}

代码(方法 2):

\documentclass{article}

\newcommand*{\SchoolSentence}[1]{He goes to #1.}
\newcommand*{\MovieSentence}[2]{#1 is going to watch #2.}

\begin{document}
\SchoolSentence{Business School}

\SchoolSentence{Harvard Law School}

\MovieSentence{She}{The Shinning}

\MovieSentence{Uncle Owen}{The Empire Strikes Back}
\end{document}

相关内容