这个问题可能太笼统了,但我考虑过这个问题,因为我在几种不同的情况下都需要它。
我希望有一份我可以解决的“问题”文档。一般来说,这将是一页纸,上面是问题描述,接下来是问题的进展,还有一些随机的想法和参考资料。
当然,我可以只制作一个包含这些部分等的文档,但如果我在一年后决定实际上想要一个不同的我的文档的结构如何?我要怎么做呢?就是将其保存为文件, Super Cool Problem Bro.tex
然后在\include{Super Cool Problem Bro.tex}
我想要的页面的主文档中使用它。
因此,也许我已经用我的特定选择编写了所有这些文件,我想做一些简单的事情,例如替换所有标题文学和相关和不相关文献清单?使用一些不错的正则表达式应该可以实现这一点,但这似乎不是一个好的解决方案。如果我想添加一个部分或切换顺序怎么办?
因此,我天真地会制作某种(平面文件)数据库,其中包含有关我的问题的数据,然后我会使用 Python 脚本.tex
根据我的规范从中生成文件。没错,但那样的话,我就会使用 Python 而不是 LaTeX 来生成文件。也许我错过了一些包或简单的选项。完成之后才发现还有一个更简单的选项,这也相当烦人。如果你在做数学研究,这是很常见的,但目标类型是不同的 :-)。
对于每个问题文档底部的参考资料,我会使用chapterbib
,这似乎是正确的方法(但当然,我上面描述的内容是我真正想知道的)。
编辑:“黑客”amsref
是个好主意吗?文件本身有参考书目,我可以将其用作“数据库”。这可以重新映射到环境中。
答案1
以下是我教学大纲生成方法的简化 MWE。我有大约 40 个子文件,每个子文件最多有 100 多个备选段落,我将它们放在一起用于任何单个教学大纲。我选择这种方法是因为 1) 我只想使用 LaTeX(尽管也有一些 TeX 命令)。2) 我想将内容与格式分开。3) 我希望能够每年进行非常大的格式更改,而不必重新输入内容。4) 我不想拥有任何文本的多个副本,尤其是教学大纲中那些在我教授的所有课程中都必须相同的段落。
在 MWE 中,我提供了两个文件。第一个文件是针对每个不同的“问题”而提供的单独副本。第二个文件是定义特定数据呈现格式的文件。
现在各个数据文件如下:
\long\def\parta{Content of part a. Content of part a. Content of part a. Content of part a.}
\long\def\partb{Content of part b. Content of part b. Content of part b. Content of part b.}
\long\def\partc{Content of part c. Content of part c. Content of part c. Content of part c.}
\long\def\partd{Content of part d. Content of part d. Content of part d. Content of part d.}
\endinput % the is so that I can use the area below for comments without their being input or included.
定制这些不同的部分以包含问题中的不同信息。
我个人在我的学术大纲中大约有 100 多个这样的预设段落,然后我会从中选择特定大纲所需的段落。
需要注意的是,这只是内容,没有任何章节或段落标题和最少的格式信息。重要的是,每个部分都是我认为的“原子”(不可分割)内容。
通常这些是课程大纲的独立段落(表格、列表等)(对我来说)。
例如,对于我的教学大纲,我有一个文件,包含以下内容:1) 每个学年,2) 每个学期,3) 我个人的专业详细信息,4) 当年的部门政策,5) 当年的学术日历 6) 每门课程。还有一些其他文件。
我不会将各个定义称为 parta、partb...,而是使用清晰的描述性标题。不过,我遵守“原子”部分的严格规则。
这些是数据文件,通过谨慎使用通常的 \input(仅加载定义)或偶尔的 \include(开始新页面),我可以构建其他文档。注意:我故意使用 \long\def 而不是 \newcommand,因为我将其视为数据而不是参数命令。(如果您计划为这些文件设置参数,则应使用 \newcommand 和 \renewcommand 结构。
这是一个示例“主”文件。
\documentclass{article}
\begin{document}
\begin{center}
First version of the document using data
\end{center}
\input{bigdocdata} %Just change the file name used here to use data from a different problem
\begin{description}
\item[Cool Title] \textbf{\parta}
\item[Cooler Title] \textit{\partd}
\item[Coolest Title] \texttt{\tiny\partb}
\end{description}
\newpage
\begin{flushright}
Another document using the same data
\end{flushright}
\begin{tabular}{p{1.5in}||p{1.5in}||p{1.5in}}
\tiny\partb&\partc&\Huge\partd
\end{tabular}
\end{document}
编译后的输出为: