Removendo comentários em LaTeX

Removendo comentários em LaTeX

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
  1. 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:
é %
  1. Quando executo arxiv-latex-cleaner \path\to\folder, aparece um erro que arxiv-latex-cleanernã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 onde arxiv_latex_cleaner.exeestá localizado (ou seja C:\Users\MYNAME\AppData\Roaming\Python\Python39\Scripts) o PATH. Desinstalei e reinstalei arxiv-latex-cleanerusando 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 stripperna 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).

informação relacionada