TeXで『節タイトルだけ大文字』、『トンボをつける』
原稿を書いていると、指定のフォーマットに沿っていることを要求されることが多々あるのですが、今回遭遇した2つの問題におけるTeXでの解決方法をまとめておこうと思います。1つは、節のタイトルを英文字の大文字にしなさい、という指定です。もう1つは用紙サイズがA4といった通常のサイズではなく、変な大きさの場合への対処方法です。
まず1つ目についてですが、節のタイトルだけ大文字にする方法です。はじめから大文字で書けばいいんじゃない、と思われる方もいるかもしれませんが、楽をするために苦労するのが僕のポリシーです。そこで、通常のスペルで記述しても、自動的に大文字に変換する方法を検討してみました。最終的には以下の呪文(笑)をプリアンプルに書くと、英小文字で書いたところで、全て大文字に変換されます。
\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オプションでサポートされています。
geometryのshowcrop
たとえば100x100mmの仕上がり範囲にトンボを入れたければ、以下のコードで実現できます。
jsarticleを使っていることを想定して例では単位をtruemmとしました。またlayoutoffsetがない場合は、実際に印刷する紙の左上隅を基準に仕上がり範囲を定めることになりトンボの一部が印刷から消えてしまい都合が悪かったので、いれてあります。
痒いところに手が届いたとき、TeXを使っていてよかったなぁと思います。
コメント
>nさん
usepackageの順番を気にしなければいけなかったりするところをみると、パッチパッチでやりくりしている状況がなんとかなく想像できてしまいます。あまり密林に入りすぎないよう注意しないとですね。綺麗な原稿を作るためなら、と気づいたらズブズブに嵌ってしまっていることがほとんどです(笑)。
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。
「TeX は万能なので必ずできるはず」ということだけは分かっています。しかし,それを実装するのが難しい。最終的にはできるんだけど,バッドノウハウが山積みになる,というパターンが多いです。
Posted by: n : December 23, 2010 10:17 PMLaTeX の範囲を越えて TeX に手を出し始めたところで,それが起こってくるような気がします。