创建用户界面来控制文档的内容

创建用户界面来控制文档的内容

我正在寻找一种最简单的方法,让某人(例如,可能不擅长使用 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\inputs InitMain.tex,包含\toggletrue您需要的所有内容,最后是\inputsMain.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。

相关内容