履歴書の位置線を変更するなど、かなり柔軟な1回限りのオプションが必要な場合は、ウィルのアプローチを使用する必要があります。同じオプションの選択肢を何度も作成している場合は、コマンドライン引数を避けるか、ビルドスクリプトまたはmakefileに組み込むことを検討する必要があります。
コマンドライン引数を回避するための2つのテクニックを紹介します。
秘訣1: 2つのスタイルの例のように、アクセス可能なままでなければならない固定配列のドキュメントを作成する場合は、別のtexファイル内にWillのlatexコードを実装することをお勧めします。つまり、thesis.texにはa\providecommand\comment[1]{\emph{#1}}
とthesis-uglyが含まれます。 texはで構成され\newcommand\comment[1]{\textbf{#1}} \input thesis.tex
ます。
ln -s thesis.aux thesis-ugly.aux
もちろん、この手法を使用する場合は、中間ファイルalaおよび。をシンボリックリンクしない限り、bibtexなどのツールを再実行する必要がありますln -s thesis.bbl thesis-ugly.bbl
。
トリック2: ドキュメントの用紙サイズを変更するのが難しいトリック1を見つけたので、単に用紙サイズと呼ばれる次のperlスクリプトを作成しました。このコマンドpapersize A4 teaching.tex
は、teaching.texをインプレースで変更し、teaching.pdfをteaching-A4.pdfにシンボリックリンクして、実行するとpdflatex teaching
teaching-A4.pdfが作成されますが、既存のteaching-letter.pdfを妨害せず、再実行する必要はありませんbibtex teaching
。内部参照のあるドキュメントでは、明らかにpdflatexを2回再実行する必要があります。
#!/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 $_);
} }
}
% paper size :: ...
用紙サイズを変更するときに変更する必要があるすべてのファイル行に、特別なコメントを追加する必要があります。
\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
明らかに、用紙サイズをビルドスクリプトまたはmakefileに組み込むか、上記のスクリプトを.dviファイル用に変更するか、スクリプトを他の変更に一般化することができます。