Eliminación de comentarios en LaTeX

Eliminación de comentarios en LaTeX

Estoy luchando por eliminar los comentarios de un archivo LaTeX.

Probé las dos respuestas principales deesta pregunta, pero no funciona.

Aquí hay un archivo de prueba:

é %comment
  1. Cuando ejecuto latexpand test.tex > stripped.tex, hay un problema con la codificación del archivo resultante y no se compila en PDF. stripped.texes como sigue:
é %
  1. Cuando ejecuto arxiv-latex-cleaner \path\to\folder, un error dice que arxiv-latex-cleanerno está definido en la RUTA: arxiv-latex-cleaner : The term 'arxiv-latex-cleaner' is not recognized as the name of a cmdlet, function, script file, or operable program. tengo la carpeta donde arxiv_latex_cleaner.exese encuentra (es decir C:\Users\MYNAME\AppData\Roaming\Python\Python39\Scripts,) en la RUTA. Desinstalé y reinstalé arxiv-latex-cleanerusando pip, tanto en el indicador de Windows como en el indicador de Anaconda, sin éxito. Sigo recibiendo el mismo error.

Tengo Windows 10, Python 3.9 instalado a través de Anaconda y LaTeX instalado a través de texlive.

Respuesta1

(esta es la tercera versión)

Guardar esto como archivostripper.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 stripperen la línea de comando, luego se le solicita un nombre de archivo. Ingréselo (que termine con <return>) y luego eTeX produce el resultado en un nuevo archivo en el repertorio de trabajo. Para empezar, haga que el archivo que desea eliminar esté en el mismo repertorio de trabajo.

Existen algunas limitaciones y surgirán problemas si %se utiliza para otras cosas además del carácter de comentario (por ejemplo, si hay un \%.)

Teóricamente, este código ubica todos %los y recorta lo que les sigue en sus líneas de entrada.

En comparación con la última versión de esta respuesta, esta evita que las líneas del archivo de salida terminen con un carácter de espacio. (que de todos modos no importaba).

información relacionada