TeXノウハウ
misc
定理環境
usepackage{amsthm} と宣言する. ドキュメント(2516)
使用例:
\theoremstyle{plain}% default \newtheorem{theorem}{Theorem}[section] \newtheorem{lemma}[theorem]{Lemma} \newtheorem{proposition}[theorem]{Proposition} \newtheorem*{corollary}{Corollary} \newtheorem*{KL}{Klein's Lemma} \theoremstyle{definition} \newtheorem{definition}{Definition}[section] \newtheorem{example}{Example}[section] \theoremstyle{remark} \newtheorem*{remark}{Remark} \newtheorem*{note}{Note} \newtheorem{case}{Case} \renewcommand{\proofname}{{\bf 証明}}
enumerate環境での番号の振り方
1 \renewcommand{\labelenumi}{\theenumi} (a) \renewcommand{\labelenumi}{(\alph{enumi})} (i) \renewcommand{\labelenumi}{(\roman{enumi})} (1) \renewcommand{\labelenumi}{(\arabic{enumi})}
など.そのほか,roman, arabic, alph, Alph, Roman など.
tabular環境での太線
\noalign{\hrule height 1pt}
list環境の縦方向の空白を取り除く
art10.sty などの @listI, @listn, small, footnotesize の定義をコピーして,parsep や itemsep などのパラメタを 0pt に設定する.
\def\@listI{\leftmargin\leftmargini \partopsep=0pt \parsep=0pt \topsep=0pt \itemsep=0pt \relax} \def\@listii{\leftmargin\leftmarginii \labelwidth\leftmarginii \advance\labelwidth-\labelsep \topsep=0pt \parsep=0pt \itemsep=0pt \relax} \let\@listi\@listI \@listi
uplatex
UTF-8で書ける.shift jis でもよい.jsarticle を使用するときには,オプションに uplatex を指定する.例:
\documentclass[12pt,uplatex]{jsarticle}
アンダースコア underscore
- バックスラッシュとアンダースコアを並べるのが基本
a\_b $a\_b$
- 長さが短いような気がする.フォントを適当に選べばよいのかもしれないが,安直にするには,
\newcommand{\myunderscore}{\leavevmode\kern.06em\vbox{\hrule width.5em}}
Comprehensive LaTeX Symbol Guide -- 数学記号など
画像をテキストの上に重ねる.
- 基本的には,普通に llap, rlap を使って重ね打ちをすればよい.
- latex の raisebox マクロが便利.raisebox{x}[y][z]{contents} とすると,x (正なら上,負なら下)だけ移動して contents を組むほか,できあがったボックスの高さがy, 深さがzとみなしてくれる.
enumerate環境で,いくつかの番号の上に○をつけてみた例:
\item \mbox{}\llap{\raisebox{-1.7ex}[0pt][0pt]{\includegraphics{circ.eps}\hspace{.3em}}}% ここから本文
改ページの抑制
samepage
マクロを調べる.
- 日本語pLaTeX2e (pldoc.pdf)
- pLaTeX2e (source2e.pdf)
- plain TeX (TeX for the impatient)
パッケージやフォントのインストール
Managing a one-person TeX system
カラムが狭い時,数式を含む文の改行
sloppy を試してみる.元に戻すには fussy
数式用のフォント
ローマン\mathrm, サンセリフ\mathsf, タイプライタ\mathtt, 太字\mathbf, イタリック\mathit, ドイツ文字\mathfrak, 黒板\mathbb, 花文字\mathcal
特殊文字
例: バックスラッシュ \char`\\ , 中括弧開き \char`\{
これらは,タイプライタフォントでも機能する.
ポスターの分割印刷
まず,epssplitをインストールする.これはperl scriptである.tar-ballをもってきたら,/usr/local/lib あたりで展開して,スクリプト epssplit を /usr/local/bin に持って行く.最初の行に -I/usr/local/lib/epssplit-1.1.0を追加する.
次に,ポスターの dvi ファイルを普通に作成する.ここでは poster.dvi という名前だとする.
あとは以下のような感じ.印刷したいページを,for 文の引数で指定する.split1.ps, split2.ps, ... といったファイルができる.
#!/bin/sh base=poster # for B1 poster # width 728mm / 25.4 mm/inch * 72 pspt/inch = 2064 pspt # height 1030mm / 25.4 mm/inch * 72 pspt/inch = 2920 pspt width=2064 height=2920 # for A0 poster # width 841mm / 25.4 mm/inch * 72 pspt/inch = 2384 pspt # height 1189mm / 25.4 mm/inch * 72 pspt/inch = 3370 pspt #width=2384 #height=3370 pcom="s/^%%BoundingBox:.*/%%BoundingBox: 0 0 ${width} ${height}/" platex $base.tex dvipsk $base.dvi for num in 1 2; do psselect -p${num} ${base}.ps page${num}.ps gswin32c -dNOPLATFONTS -dWINKANJI -q -sDEVICE=epswrite -sOutputFile=page${num}.eps -r600 -q - < page${num}.ps perl -i -p -e"$pcom" page${num}.eps epssplit -o split${num}.ps -O Potrait --scale 0.99 -mar 5mm page${num}.eps done rm -f $base.dvi $base.aux $base.log $base.ps page*.ps page*.eps page*.eps.bak
その他のオプションなどはマニュアルを参照
描画
いろいろ
powerpointとwmf2epsで
- powerpointで絵を描く.TeXに取り込みたい部分全体をcopyする.
- wmf2eps で pasteする.その後 eps に変換する.
ただし,この方法だと,powerpoint の中でTeXpointを使った場合に,背景を透明にできない.これをなんとかするには:
- TeXPointでコンパイルを行うとき,dialog box の transparent にチェックを入れる.色は (字自体が白黒なら) monochrome で良い.
- 通常と同じようにpowerpoint上でcopyをする.
- wmf2eps で paste する.このとき,必ず EMF を選ぶ.epsには変換しない.
- imagemagick を使ってコマンドラインから
$ convert -density d1 clip000.emf -density d2 clip000.eps
などと変換する.-density を2回指定しているが,d1は EMF をどの解像度とみなすかを決めるもので,d2は epsの解像度をどれだけにするか決めるもの.したがって,きめ細かさ (ファイルサイズ)は d1 だけで決まる.見た目の大きさは,比 d1/d2 で決まる.この値が大きいほど,見た目の大きさは大きい.とりあえずは d1 = 72, d2 = 600 くらいで始めて,試行錯誤をする.(後でincludegraphicsのwidthで調整できるので,d2 はあまり気にしなくても良いかもしれない.)