使用 LaTeX xkeyval 进行编程

使用 LaTeX xkeyval 进行编程

我被分配了以下任务。由于我不擅长使用 Latex,所以我对它的可能性感到疑惑。

我想在开发文档时分配参数。例如:

file1.tex

\chapter chapter_name1 [arg1=true]or [arg1]

file2.tex

\chapter chapter_name2 [arg1][arg2]
\include<file3> (here it should go to file3.tex and again checks there relevant argument in order to include correct chapter/section)

file3.tex

\section chapter_name1 [arg2][arg3]
\subsection sunsection_name [arg4]

myfile.tex

它有一些循环和解析器来分割输入参数以包含相关文件。

在终端编译时我应该决定(通过传递参数)将哪一章插入到myfile.pdf文件中。例如:

pdflatex "\def \parameter {arg2 arg3} input{myfile.tex}"

那么myfile.pdf应该

chapter_name2 
section_name1

我听说过xargsxkeyval软件包,但我几乎不了解它们。我仍然不确定它们对我有什么帮助。我的任务可以完成吗?如果可以,请建议我应该怎么做?


为了避免混淆,我修改了这个问题。

我为用户准备了大量内容。对于不同的用户,我想显示不同的内容。为此,我想通过显示和不显示文档的某些内容(例如章节、部分和子节)来产生不同的输出。

我的想法是:在编写章节/部分时,我通过将参数设置为 true 或 false 来声明它可以向哪种用户显示。

如果 user1==true 那么它应该在 user1.pdf 中

例如

宏是(例如):\Modifiedchapter [bool arg1][bool arg2][bool arg3]

\Modifiedchapter <chapterName1> [user1==true][user2==false][user3==false] 

\Modifiedchapter <chapterName2> [user1==true][user2==true][user3==false]

\Modifiedsection <sectionName1> [user1==true][user2==true][user3==true]

如果我传递user1并且user3为“True”,那么我的输出应该包含

命令(例如):“\def\arg1=true,arg2=false,arg1=true \input{myfile}”

chapterName1

sectionName1

我怎样才能做到这一点?

答案1

这是个好主意不是\chapter更改标准命令(如和 )的语法\section。尽管 LaTeX 允许您优化系统的任何部分,但利用这种灵活性将使您的文档片段难以在任何其他上下文中处理。

您已经在使用\include旨在支持部分编译的功能,这似乎是您的实际用例。

使用时\include你应该不是使用文件扩展名,你应该只使用

\include{file3}

否则 LaTeX 将找不到相关aux文件。

添加\includeonly{file3}(可以通过类似于您的示例的命令行完成,或者直接添加到您的主文件)将导致file3被包含并且任何其他通过引用的文件\include被跳过。

相关内容