Estou lutando para retirar comentários de um arquivo LaTeX.
Eu tentei as duas respostas principais deessa questão, mas não funciona.
Aqui está um arquivo de teste:
é %comment
- Quando executo
latexpand test.tex > stripped.tex
, há um problema com a codificação do arquivo resultante e ele não é compilado em PDF.stripped.tex
é o seguinte:
é %
- Quando executo
arxiv-latex-cleaner \path\to\folder
, aparece um erro quearxiv-latex-cleaner
não está definido no PATH:arxiv-latex-cleaner : The term 'arxiv-latex-cleaner' is not recognized as the name of a cmdlet, function, script file, or operable program.
Tenho a pasta ondearxiv_latex_cleaner.exe
está localizado (ou sejaC:\Users\MYNAME\AppData\Roaming\Python\Python39\Scripts
) o PATH. Desinstalei e reinstaleiarxiv-latex-cleaner
usando pip, tanto no prompt do Windows quanto no prompt do Anaconda, sem sucesso. Ainda obtenho o mesmo erro.
Tenho Windows 10, Python 3.9 instalado através do Anaconda e LaTeX instalado via texlive.
Responder1
(esta é a 3ª versão)
Salve isso como arquivostripper.tex
% macro to sanitize catcodes, making space and % active
\def\stringregime{%
\catcode`\\ 12
\catcode`\{ 12
\catcode`\} 12
\catcode`\# 12
\catcode32 \active
\catcode`\~ 12
\catcode`\% \active
}%
% active space gives normal space
\begingroup
\catcode32\active\xdef {\string }%
\endgroup
\begingroup
% the \empty delimiter will be added manually by \handlelines
\catcode`\%\active
\xdef%#1\empty{\string%}
\endgroup
\def\removeEOLspacechar#1 {\def\fileline{#1}}
\def\bracedpar{\par}
% main loop macro
\def\handlelines{%
\ifeof\infile
\else
\read\infile to \fileline
% remove the EOL space from \fileline before outputting it
% If TeX replaces an empty line by \par in input there is no space
% token only the \par token.
\ifx\fileline\bracedpar\def\fileline{}\else
\expandafter\removeEOLspacechar\fileline
\fi
\immediate\write\outfile{\fileline\empty}% delimiter for active %
\expandafter\handlelines
\fi
}
% loop launch
\def\DoIt{%
\begingroup
\stringregime
\handlelines
\endgroup
}
% file auxiliaries
\newread\infile
\newwrite\outfile
\immediate\write128{}
\message{filename to strip of comments: }\read-1to\theinfile
% clean up trailing space
\def\cleanuptrailingspace#1 \par{\def\theinfile{#1}}
\expandafter\cleanuptrailingspace\theinfile\par
%
\openin\infile\theinfile\relax
\immediate\openout\outfile\theinfile-out
\DoIt
\immediate\write128{output written to \theinfile-out USE AT OWN RISK}
\immediate\closein\infile
\immediate\closeout\outfile
\bye
Uso: problema etex stripper
na linha de comando, será solicitado um nome de arquivo. Insira-o (terminando com <return>
) e o eTeX produz a saída em um novo arquivo no repertório de trabalho. Para começar, faça com que o arquivo seja removido do mesmo repertório de trabalho.
Existem algumas limitações e surgirão problemas se %
for usado para outras coisas além do caractere de comentário (por exemplo, se houver um \%
.)
Teoricamente, esse código localiza todos %
e corta tudo o que os segue em suas linhas de entrada.
Em comparação com a versão mais recente desta resposta, esta evita que as linhas do arquivo de saída terminem com um caractere de espaço. (o que de qualquer forma não importava).