TeXノウハウ

misc

定理環境

usepackage{amsthm} と宣言する. ドキュメント(1996)

使用例:

\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

マクロを調べる.

パッケージやフォントのインストール

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 はあまり気にしなくても良いかもしれない.)