Programmieren mit LaTeX xkeyval

Programmieren mit LaTeX xkeyval

Ich habe die folgende Aufgabe zu erledigen. Da ich mit Latex nicht gut bin, frage ich mich, welche Möglichkeiten es bietet.

Ich möchte beim Entwickeln eines Dokuments Parameter zuweisen. Beispiel:

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

Es verfügt über einige Schleifen und einen Parser zum Aufteilen der Eingabeparameter, um relevante Dateien einzuschließen.

Beim Kompilieren im Terminal muss ich (durch Übergabe von Argumenten) entscheiden, welches Kapitel in myfile.pdfdie Datei eingefügt wird. Beispiel:

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

Dann myfile.pdfsollte

chapter_name2 
section_name1

xargsIch habe von Paketen gehört xkeyval, aber ich verstehe sie kaum. Ich bin mir immer noch nicht sicher, wie sie mir helfen werden. Ist meine Aufgabe möglich? Wenn ja, schlagen Sie mir bitte vor, was ich tun soll?


Um Verwirrungen zu vermeiden, habe ich die Frage geändert.

Ich habe eine große Menge an Inhalten für den Benutzer. Ich möchte verschiedenen Benutzern unterschiedliche Inhalte zeigen. Dazu möchte ich unterschiedliche Ausgaben erzeugen, indem ich einige Inhalte (z. B. Kapitel, Abschnitte, Unterabschnitte) des Dokuments zeige und nicht zeige.

Meine Idee ist: Während ich ein Kapitel/einen Abschnitt schreibe, gebe ich an, welchem ​​Benutzertyp es angezeigt werden kann, indem ich das Argument auf „true“ oder „false“ setze.

wenn user1==true, dann sollte es in user1.pdf vorhanden sein

Zum Beispiel

Makro ist (Beispiel): \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]

Wenn ich user1und user3als 'True' übergebe, dann sollte meine Ausgabe enthalten

Befehl (Beispiel): "\def\arg1=true, arg2=false, arg1=true \input{myfile}"

chapterName1

sectionName1

Wie kann ich das machen?

Antwort1

Das ist eine gute Ideenichtum die Syntax von Standardbefehlen wie \chapterund zu ändern \section. Obwohl LaTeX Ihnen erlaubt, jeden Teil des Systems zu verfeinern, führt die Ausnutzung dieser Flexibilität dazu, dass Ihre Dokumentfragmente in jedem anderen Kontext schwer zu verarbeiten sind.

Sie verwenden bereits \includedas zur Unterstützung der teilweisen Kompilierung konzipierte Programm, das Ihr tatsächlicher Anwendungsfall zu sein scheint.

Bei der Verwendung \includesollten Sienichtverwenden Sie die Dateierweiterung, sollten Sie einfach verwenden

\include{file3}

Andernfalls findet LaTeX die entsprechenden auxDateien nicht.

Das Hinzufügen \includeonly{file3}(das über eine Befehlszeile ähnlich Ihrem Beispiel erfolgen oder einfach zu Ihrer Hauptdatei hinzugefügt werden kann) führt dazu, file3dass es eingeschlossen wird und alle anderen Dateien, auf die verwiesen wird, \includeübersprungen werden.

verwandte Informationen