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
- Cuando ejecuto
latexpand test.tex > stripped.tex
, hay un problema con la codificación del archivo resultante y no se compila en PDF.stripped.tex
es como sigue:
é %
- Cuando ejecuto
arxiv-latex-cleaner \path\to\folder
, un error dice quearxiv-latex-cleaner
no 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 dondearxiv_latex_cleaner.exe
se encuentra (es decirC:\Users\MYNAME\AppData\Roaming\Python\Python39\Scripts
,) en la RUTA. Desinstalé y reinstaléarxiv-latex-cleaner
usando 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 stripper
en 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).