subtitulos - Pasar argumentos de línea de comando al documento LaTeX
plantilla latex documento (3)
A veces, defino nuevos comandos como el siguiente.
/newcommand{/comment}[1]{/textbf{#1}}
%/necommand{/comment}[1]{/emph{#1}}
Los comandos anteriores me permiten cambiar el estilo de las partes de mi código a la vez. Si quiero generar ambos estilos posibles, tengo que compilar mi documento LaTeX dos veces cada vez que modifique el código fuente para habilitar el estilo deseado.
¿Hay alguna forma de evitar la modificación del código fuente en tales casos? Es decir, ¿puedo pasarle al látex algunos argumentos de la línea de comandos para poder elegir qué estilo usar según ese argumento?
Es decir, ¿puedo pasarle al látex algunos argumentos de la línea de comandos para poder elegir qué estilo usar según ese argumento?
Sí. Tres opciones:
Uno
En su archivo fuente, escriba
/providecommand{/comment}[1]{/emph{#1}}% fallback definition
y luego compilar el documento LaTeX ("myfile.tex") como
pdflatex (whatever options you need) "/newcommand/comment[1]{/textbf{#1}}/input{myfile}"
Dos
Alternativamente,
pdflatex "/let/ifmyflag/iftrue/input{myfile}"
y luego tener en la fuente
/ifcsname ifmyflag/endcsname/else
/expandafter/let/csname ifmyflag/expandafter/endcsname
/csname iffalse/endcsname
/fi
...
/ifmyflag
/newcommand/comment[1]{/emph{#1}}
/else
/newcommand/comment[1]{/textbf{#1}}
/fi
Tres
O incluso
pdflatex "/def/myflag{}/input{myfile}"
con
/ifdefined/myflag
/newcommand/comment[1]{/emph{#1}}
/else
/newcommand/comment[1]{/textbf{#1}}
/fi
que probablemente sea el más corto, aunque levemente frágil porque nunca se sabe cuándo un paquete podría definir /myflag
a sus espaldas.
Debe usar los enfoques de Will cuando necesite opciones únicas bastante flexibles, como cambiar la línea de posición en su currículum. Si otoh está produciendo la misma selección de opciones una y otra vez, entonces debería considerar evitar los argumentos de la línea de comandos, o trabajarlos en un script de compilación o un archivo make.
Daré dos técnicas para evitar los argumentos de línea de comando:
Truco 1: si está produciendo una matriz fija de documentos que deben permanecer accesibles, como el ejemplo de dos estilos, entonces recomendaría simplemente implementar el código de látex de Will dentro de otro archivo tex, es decir, thesis.tex contiene un /providecommand/comment[1]{/emph{#1}}
y thesis-ugly.tex consta de /newcommand/comment[1]{/textbf{#1}} /input thesis.tex
.
Por supuesto, debe volver a ejecutar herramientas como bibtex al usar esta técnica, a menos que enlace simbólicamente los archivos intermedios, ala ln -s thesis.aux thesis-ugly.aux
y ln -s thesis.bbl thesis-ugly.bbl
.
Truco 2: Encontré el truco 1 incómodo para cambiar los tamaños de papel de los documentos, así que escribí el siguiente script de perl, llamado simplemente tamaño de papel. El comando papersize A4 teaching.tex
modifica educational.tex in place, y symlinks teaching.pdf a teaching-A4.pdf, de modo que ejecutar la enseñanza de pdflatex crea teaching-A4.pdf, pero no altera la letra de enseñanza preexistente. pdf y no requiere volver a ejecutar la bibtex teaching
. Obviamente, requiere volver a ejecutar pdflatex dos veces para documentos con referencias internas.
#!/usr/bin/perl -i~ -n
BEGIN {
die "Usage: papersize letter/A4/etc. [filename]/n" if ($#ARGV < 0);
$SIZE = shift @ARGV; @files=@ARGV;
$FLAG = "% paper size :: ";
}
if (/$FLAG(/w+)/) {
if ($1 eq $SIZE) {
s/^/% //;
} else {
s/^([^/%])//% /1/;
}
}
print $_;
END {
foreach (@files) {
if (s//.tex//) {
$l = "$_-$SIZE.pdf"; $_ .= ".pdf";
unlink($_) if (-l $_);
symlink($l,$_) if (! -e $_);
} }
}
Debe agregar los comentarios especiales % paper size :: ...
a cada línea de archivo que se debe cambiar cuando cambie el tamaño del papel.
/documentclass[letterpaper,11pt]{article} % paper size :: letter
% /documentclass[a4paper,11pt]{article} % paper size :: A4
/usepackage[text={6.5in,8.8in}]{geometry} % paper size :: letter
% /usepackage[text={16.4cm,24.5cm}]{geometry} % paper size :: A4
Obviamente, podría trabajar en el tamaño del papel en un script de compilación o makefile o modificar el script anterior para archivos .dvi ... o generalizar el script para otras modificaciones.
Para proporcionar mi disertación tanto en el formato feo requerido, feo y ifthen
, como en una versión más compacta y más bonita, utilicé ifthen
un conjunto de make
y sed
que reescribió un poco el encabezado.
Creo que los enfoques de Will son más agradables.