
Eu li aqui (segundo comentário à pergunta)
Quando devo usar \input vs. \include?
que \@input
"não gera erro se o arquivo não existir".
Se eu tentar
\documentclass{article}
\begin{document}
\@input{toBeIncluded.tex}
\end{document}
Eu realmente não entendofatalerro, mas ainda recebo 3 erros de compilação e, mais importante, meu pdf contém a palavra "inputtoBeIncluded.tex".
Existe uma maneira simples deignorar completamenteo comando de entrada se o arquivo de entrada não existir?
Muito obrigado
Responder1
Você precisa adicionar \makeatletter
para habilitar o uso do símbolo @
em uma macro.
\documentclass{article}
\begin{document}
abc
\makeatletter
\@input{myfile.tex}
\makeatother
\end{document}
EDITAR
Conforme observado por @Emil Jeřábek, isso tem o efeito colateral de alterar o código de gato de @ enquanto myfile.tex
está sendo lido. É improvável que isto tenha quaisquer efeitos adversos, mas pode ser evitado da seguinte forma:
\documentclass{article}
\makeatletter
\let\conditionalinput\@input
\makeatother
\begin{document}
abc
\conditionalinput{fred.tex}
\end{document}
Dito isto, provavelmente é melhor usar \InputIfFileExists{file}{}{}
, conforme sugerido por @daleif.
Responder2
Em vez de usar \@input
o melhor método é provavelmente usar
\InputIfFileExists{file}{then}{else}
Isso será executado \input
se file
existir e, em seguida, executará o código em then
. Se o arquivo não existir, o código else
será executado. Você poderia, por exemplo, adicionar um aviso na else
parte, apenas para informar que este arquivo específico não foi encontrado.
Se você quiser apenas uma entrada piscante se o arquivo existir, basta usar
\InputIfFileExists{file}{}{}
Para mais detalhes sobre esta macro veja- texdoc source2e
a descrita na ltfiles.dtx
parte, seção 19,Manipulação de arquivos