Programando com LaTeX xkeyval

Programando com LaTeX xkeyval

Eu designei para fazer a seguinte tarefa. Como não sou bom em látex, fico imaginando suas possibilidades.

Gostaria de atribuir parâmetros durante o desenvolvimento do documento. EX:

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

possui alguns loops e analisador para dividir parâmetros de entrada a fim de incluir arquivos relevantes.

Na hora de compilar no terminal devo decidir (passando argumentos) qual capítulo será inserido no myfile.pdfarquivo. EX:

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

Então myfile.pdfdeveria ter

chapter_name2 
section_name1

Já ouvi falar de xargspacotes xkeyval, mas dificilmente os entendo. Ainda não tenho certeza de como isso vai me ajudar. Minha tarefa é possível? Se sim, por favor me sugira o que devo fazer?


Para evitar confusões, modifiquei a pergunta.

Eu tenho um grande conjunto de conteúdos para o usuário. Para usuários diferentes, gostaria de mostrar conteúdos diferentes. para isso, gostaria de produzir resultados diferentes, mostrando ou não alguns dos conteúdos (digamos, subseção de seções de capítulos) do documento.

Minha ideia é: ao escrever o capítulo/seção, declaro que é possível mostrar a que tipo de usuário, definindo o argumento como verdadeiro ou falso.

se user1==true então deve estar lá em user1.pdf

por exemplo

A macro é (ex): \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]

Se eu passar user1e user3como 'True', minha saída deverá conter

comando (ex): "\def\arg1=true, arg2=false, arg1=true \input{meuarquivo}"

chapterName1

sectionName1

Como posso fazer isso?

Responder1

É uma boa ideianãopara alterar a sintaxe de comandos padrão como \chaptere \section. Embora o LaTeX permita refinar qualquer parte do sistema, aproveitar essa flexibilidade tornará difícil processar os fragmentos do seu documento em qualquer outro contexto.

Você já está usando \includeo qual foi projetado para suportar compilação parcial, o que parece ser seu caso de uso real.

Ao usar \includevocê devenãouse a extensão do arquivo, você deve apenas usar

\include{file3}

Caso contrário, o LaTeX não encontrará os auxarquivos relevantes.

adicionar \includeonly{file3}(que pode ser feito através de uma linha de comando semelhante ao seu exemplo, ou apenas adicionado ao seu arquivo principal) fará com que file3todos os outros arquivos referenciados \includesejam ignorados.

informação relacionada