我正在寻找一种最简单的方法,让某人(例如,可能不擅长使用 LaTeX)控制特定文档的内容。为了提供更多背景信息,我希望创建一个具有相同格式的“主”文档集合,这些文档几乎完全由一组大约 30 个“较小”文档的不同组合组成(每个文档本质上都是“主”文档内的章节或子章节)。需要注意的是,“较小”文档通常会进行小更新,因此它们会从单独的文件中调用到“主”文档中(以避免在发生小更改时必须手动更改许多“主”文档)。
到目前为止,我得到的是一个通用的“主”文档,其序言中包含切换开关,用于控制哪些“较小”文档出现在“主”文档中。目前,一切运行正常,对于创建“主”文档的人来说,如果他们不希望特定的“较小”文档出现在他们正在创建的“主”文档中(例如,下面的“TheFirstDocument”不会出现在“主”文档中),则%
唯一\toggletrue
要做的就是在序言中注释“ ”。此外,我下面写的内容当然不是为了编译(缺少文件和包),只是为了展示一个通用示例。
我的问题是,有没有办法创建一个非常友好的用户界面,让制作“主要”文档的人只需勾选他们想要包含的“较小”文档的复选框即可?如果 LaTeX 本身无法做到这一点,有人能建议从这里开始最简单的方法来实现这一点吗?
\documentclass{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Select Desired Documents %%%
\newtoggle{TheFirstDocument}
%\toggletrue{TheFirstDocument}
\newtoggle{TheSecondDocument}
\toggletrue{TheSecondDocument}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\iftoggle{TheFirstDocument}
{ExecuteMetaData[TheFirstDocument.tex]{tag}
}
{%nothing
}
\iftoggle{TheSecondDocument}
{ExecuteMetaData[TheSecondDocument.tex]{tag}
}
{%nothing
}
\end{document}
答案1
LaTeX 版本的答案是:
首先,可以分成Main.tex
三个文件:
InitMain.tex
包含\documentcalss
、第二个文件的一些必需的包以及\newtoggle
您需要的所有包。
\documentclass{article}
\usepackage{etoolbox}
\newtoggle{TheFirstDocument}
\newtoggle{TheSecondDocument}
第二个文件(Main_A.tex
)\input
s InitMain.tex
,包含\toggletrue
您需要的所有内容,最后是\input
sMain.tex
\input{InitMain}
\toggletrue{TheFirstDocument}
%\toggletrue{TheSecondDocument}
\input{Main}
并且Main.tex
可以包含\usepackage
您需要的附加内容和其他内容。当然,您可以有条件地在此处输入小文档。
% additional preamble stuff
\begin{document}
\iftoggle{TheFirstDocument}
{\input{TheFirstDocument.tex}
}
{%nothing
}
\iftoggle{TheSecondDocument}
{\input{TheSecondDocument.tex}
}
{%nothing
}
\end{document}
接下来只需要编译Main_A.tex
就可以得到最终的文档。
这样,用户只需要编辑小文件Main_A.tex
,就可以拥有具有不同设置的文件Main_B.tex
等等Main_C.tex
。
答案的另一半取决于操作系统、可用的脚本语言、技能等。您可以编写一个脚本,读取Main_A.tex
、初始化复选框并最终编写一个添加或删除%
符号的新版本。例如:在 Windows 上,可以使用 jscript 构建像您展示的那样的 GUI。您甚至可以在那里添加一个按钮,例如,调用 latexmk(从未使用过)直接从对话框中生成最终文档,前提是计算机上安装了 LaTeX。