Eu quero criar dois arquivos de saída pdf de uma única fonte LaTeX.
Um arquivo de saída é público e o outro (com informações adicionais) se torna privado.
Eu uso um arquivo make, que usa find para grep o arquivo tex no diretório. Esta é uma solução simples porque desta forma eu posso reutilizar o makefile para muitos projetos sem precisar modificar seu conteúdo.
Esta é a parte importante do makefile.
all:
# This creates the public output file
find -name *.tex -exec sh -c 'pdflatex {}' \;
Agora quero adicionar outra linha para criar o arquivo de saída particular.
Deve ser algo como isto:
all:
# This creates the public output file
find -name *.tex -exec sh -c 'pdflatex {}' \;
# This creates the private output file
find -name *.tex -exec sh -c 'pdflatex --jobname=ABC '\def\privatflag{}\input{XYZ}' {}' \;
Para o ABC, procuro uma solução para especificar o nome do arquivo padrão, mas com um prefixo.
Para o XYZ, procuro uma solução para passar o nome do arquivo de entrada aqui.
O uso das aspas internas também não está correto aqui, eu acho.
Atualização 1 : Talvez eu possa explicar o problema de maneira mais simples.
Este comando funciona no shell de comando:
pdflatex --jobname=outputfile '\def\privatflag{}\input{inputfile.tex}'
Mas estou procurando uma solução para usá-lo com find -name *.tex -exec
, para que eu não precise especificar o nome de arquivo intput inputfile.tex.
Além disso, procuro uma maneira que não precise especificar --jobname=outputfile
. Ele deve corresponder ao nome do arquivo de entrada com um prefixo adicional.
Atualização 2 : graças ao muru e Stéphane Chazelas , a questão está resolvida.
Esta é agora a parte importante do makefile
all:
# This creates the public output file
find -name *.tex -exec sh -c 'pdflatex {}' \;
# This creates the private output file
find . -name '*.tex' -execdir sh -c 'pdflatex --jobname=privat_"$${1##*/}" "\def\privatflag{""}\input{$${1##*/}}"' {}-job {} \;