TeXで『節タイトルだけ大文字』、『トンボをつける』

原稿を書いていると、指定のフォーマットに沿っていることを要求されることが多々あるのですが、今回遭遇した2つの問題におけるTeXでの解決方法をまとめておこうと思います。1つは、節のタイトルを英文字の大文字にしなさい、という指定です。もう1つは用紙サイズがA4といった通常のサイズではなく、変な大きさの場合への対処方法です。

まず1つ目についてですが、節のタイトルだけ大文字にする方法です。はじめから大文字で書けばいいんじゃない、と思われる方もいるかもしれませんが、楽をするために苦労するのが僕のポリシーです。そこで、通常のスペルで記述しても、自動的に大文字に変換する方法を検討してみました。最終的には以下の呪文(笑)をプリアンプルに書くと、英小文字で書いたところで、全て大文字に変換されます。

\makeatletter
\let\sectionorig\section
\def\@sectionorig#1{\sectionorig*{\MakeUppercase{#1}}}
\def\@@sectionorig#1{\sectionorig{\MakeUppercase{#1}}}
\renewcommand{\section}{\@ifstar{\@sectionorig}{\@@sectionorig}}
\makeatother

TeXには組み込みで大文字に変換してくれるマクロ\MakeUppercaseがあるのですが、それを元の\sectionと組み合わせて使うために、\sectionコマンドを\sectionorigという別の名前に一度退避しています。その後、書き換えた\sectionコマンドで引数を大文字に変換してから、\sectionorigを使って元の\sectionを適用することで、他の書式を変更することなく内容を大文字にしています。
なお節番号がつかないAbstractやReferencesもこのままだとABSTRACTやREFERENCESと表示されることになりますが、それが問題あるようでしたら\@sectionorigだけ\MakeUppercaseの適用をはずしてください。加えてですが、subsectionやchapter等でも同様の方法がとれると思います。

もうひとつの用紙サイズの話ですが、これはトンボをつけて後から用紙を切断することで解決しました。トンボは仕上がりの範囲をあらわすために四隅につけるマークのことで、geometryパッケージのshowcropオプションでサポートされています。

pdf_tombo.png
geometryのshowcrop

たとえば100x100mmの仕上がり範囲にトンボを入れたければ、以下のコードで実現できます。

\usepackage[layoutsize={100truemm, 100truemm}, layoutoffset={20truemm, 20truemm}, showcrop, dvipdfm]{geometry}

jsarticleを使っていることを想定して例では単位をtruemmとしました。またlayoutoffsetがない場合は、実際に印刷する紙の左上隅を基準に仕上がり範囲を定めることになりトンボの一部が印刷から消えてしまい都合が悪かったので、いれてあります。

痒いところに手が届いたとき、TeXを使っていてよかったなぁと思います。

December 19, 2010 13:34 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

「TeX は万能なので必ずできるはず」ということだけは分かっています。しかし,それを実装するのが難しい。最終的にはできるんだけど,バッドノウハウが山積みになる,というパターンが多いです。
LaTeX の範囲を越えて TeX に手を出し始めたところで,それが起こってくるような気がします。

Posted by: n : December 23, 2010 10:17 PM

>nさん
usepackageの順番を気にしなければいけなかったりするところをみると、パッチパッチでやりくりしている状況がなんとかなく想像できてしまいます。あまり密林に入りすぎないよう注意しないとですね。綺麗な原稿を作るためなら、と気づいたらズブズブに嵌ってしまっていることがほとんどです(笑)。

Posted by: fenrir : December 24, 2010 09:01 AM

コメントする