Программирование с помощью LaTeX xkeyval

Программирование с помощью LaTeX xkeyval

Мне поручили выполнить следующее задание. Поскольку я не очень хорош в латексе, мне интересно, каковы его возможности.

Я хотел бы назначить параметр при разработке документа. НАПРИМЕР:

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

Я слышал о пакетах xargsи xkeyval, но я с трудом их понимаю. Я все еще не уверен, как это мне поможет. Выполнима ли моя задача? Если да, то, пожалуйста, подскажите, что мне делать?


Чтобы избежать путаницы, я изменил вопрос.

У меня большой набор требований для пользователя. Для разных пользователей я хотел бы показывать разное содержимое. Для этого я хотел бы производить разный вывод, показывая и не показывая часть содержимого (например, главы, разделы, подразделы) документа.

Моя идея такова: при написании главы/раздела я объявляю, что он доступен для просмотра определенному типу пользователя, устанавливая аргумент в значение 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]

Если я передам user1and user3как «True», то мой вывод должен содержать

команда (ex): "\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пропуску любых других файлов, на которые есть ссылки.

Связанный контент