Мне поручили выполнить следующее задание. Поскольку я не очень хорош в латексе, мне интересно, каковы его возможности.
Я хотел бы назначить параметр при разработке документа. НАПРИМЕР:
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]
Если я передам user1
and 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
пропуску любых других файлов, на которые есть ссылки.