Processing math: 100%

LaTeX

LaTeX 周辺のこと

LaTeX について

LaTeX は文章を書くためのツールである。Word などと違って直接文字を装飾するのではなく、コマンドによって文字を装飾する。文章の構成を考えて、タイトル、段落分け、改行、等を行い、文章の見た目の整形は LaTeX のルールに任せる。そうすることで、統一感の取れた文章が作成可能である。もちろん、ルールを自分で作ることもできる。

LaTeX の特徴として、美しい数式が書けることが挙げられる。なので、数式を多く使うような学術論文等を書くときはこの LaTeX を使う。もちろん、先に挙げた理由によって、数式をあまり使わない文章であっても非常に整った文章を作成することができるので便利である。

また、全ての装飾をテキストによって記述するため、キーボードから手を離すことなく、文章入力を行うことができ、つまり、色々な装飾ボタンを探したり、マウスでクリックしたりすること無く、素早く入力ができる (もちろん、装飾のための書き方を習得する必要があるが)。

さらに、.bib ファイルと連携させることで、引用文献の一覧の自動挿入も可能となり、使えば使うほど便利この上ないツールであるので、是非オススメしたい。

目次

導入 (Mac)

以下よりダウンロード・インストールする。

MacTex - TeX Users Group
TeXLive 2013 Distribution
ダウンロードしてダブルクリックでインストールするだけ (世の中簡単になったものだ)。
フルパッケージ (TeX 周りのツールも) がインストールされるため非常に重いので注意。
パッケージのアップデート
上記ユーティリティーをインストールすると、TeX Live Utility.app というソフトで逐次アップデートができるので使用すると良い。しかし、たまにエラーが出るので、メニューバーの TeX Live Utility > Check For Updates... を行い、更にうまくいかない場合は、
1$ sudo tlmgr update --self
としてから、メニューバーの Actions > Update All Packages を実行すればよい。

基本テクニック・技巧 (システマチックに行う)

  • コメント文を書く。

    コメント文は、実際には画面に出力されない文である。後で見て分かるようにメモを残したり、修正前の状態を保存したりするのに使う。コメント文を分かりやすく書くことは、文書作成およびコーディングにおいて非常に大切である。

    コメント文は、% で始まり、行末までである。

    ソース:

    1ここは表示される。% ここは表示されない。

    出力:

    1ここは表示される。

  • 記述通りに出力する。(参照: LaTeX コマンド集 - 入力通りの出力)

    verb と絶対値記号 | を使う。(\verb* の場合は空白記号 ப を出力する。)

    ソース:

    1\verb| 文章を途中で改行したい場合は \\と書きます.|

    出力: 文章を途中で改行したい場合は \\と書きます.

    ソース:

    1\verb*| 文章を途中で改行したい場合は \\と書きます.|

    出力: ப文章を途中で改行したい場合はப\\と書きます.

  • chapter、section、subsection、、、等のフォーマットを変える。

    ソース:

    1\renewcommand{\thesection}{\S~\arabic{section}}
    2\section{セクション}
    出力:
    1§ 1.1 セクション
    section 等の番号はカウンター名 section 等に入っています。そのスタイルは thesection 等で定義されています。なので、thesection を renewcommand で定義し直しているのです。\S は § に置き換わり、~ はスペースに置き換わります。\arabic{section} としたので、カウンター section に入っている数値はそのまま数値として出力されます。他にも、\arabic の代わりに、\roman, \Roman, \alph, \Alpha \fnsymbol があります。アルファベットである \alph 等は規定の数 (24) 以上はありませんので、カウンター section がそれを越える場合はエラーを出します。

  • subsubsection の番号が表示されない場合、secnumdepth を変更する。

    subsubsection まで番号を表示する。

    1\setcounter{secnumdepth}{3}

  • カウンターの修正

    カウンター section を 25 にする。

    1\setcounter{section}{25}

    カウンター chapter を 2 つ増やす。

    1\addtocounter{chapter}{2}
    マイナスにすれば、減らすこともできる。

  • reference のタイトルを変える。→ 「参考」に変える。

    1\renewcommand{\bibname}{参考} %とする。(book 系)

    1\renewcommand{\refname}{参考} %とする。(article 系)

  • 場合分けの式。

    • cases を使う場合。→ 数式番号は全体で一つ。

      数式を場合分けして記述する。

      1\begin{equation}
      2  \delta_{i,j} =
      3    \begin{cases}
      4      1 & (i = j) \\
      5      0 & (i \ne j)
      6    \end{cases}
      7\end{equation}

      出力: δi,j={1(i=j)0(ij)

    • 場合分けの式。numcases、subnumcases を使う場合。→ 数式番号はそれぞれの場合に付く。通し番号と、番号 + アルファベット。

      1\begin{numcases}
      2  {\delta_{i,j} =}
      3    1 & (i = j)\\
      4    0 & (i = j)
      5\end{numcases}
      後者は numcases → subnumcases と変える。

  • 行中の数式も大きく表示する。

    \displaystyleを使う。

    1数式を大きく表示: $\displaystyle \frac{y}{x}$

  • 全ての行中の数式を大きく表示する。

    プレアンブルに以下を記述する。

    1\everymath{\displaystyle}
    上記の中で、小さく数式を表示する。\textstyleを使う。
    1数式をコンパクトに表示: $\textstyle \sum_{n=1}^1$

  • 行末まで線を引く。(参照: \hrulefill: LaTeX)

    1\hrulefill %を使う。下線。
    1\leavevmode\leaders\hrule depth-3.1pt height 3.2pt\hfill\kern0pt %とする。線の位置を真ん中辺へ。(あまり理解していない。)

  • コマンドの定義

    • 新しいコマンドの定義
      1\newcommand{\新しいコマンド名}[引数の数]{内容}
    • 既存のコマンドの再定義
      1\renewcommand{\既存のコマンド名}{内容}
    • 例)

      ベクトル記号とプライム (ダッシュ) を一緒に付けると見づらいため (r)、見やすくするコマンドを定義。

      1newcommand{\vecp}[1]{\vec{#1}~\!'}
      2vecp{r}

      出力結果: (r )

      この画面だと余り違いがありませんが、フォントによってはかなり見にくいので。

    • 例)

      科研費の申請などで、文章の強調に私が使っている文字反転のコマンド。

      color.sty を読み込んだ上で、以下のでコマンドを定義すると、\reverse{サンプルテキスト} とすると背景が灰色で白抜きのゴシック体で出力される。

      (白黒で印刷されるので、Gray はぼやけるかもしれない。その場合は Black に変えてみること。)

      1\newcommand{\reverse}[1]{\colorbox[named]{Gray}{\color[named]{White}\textbf{#1}}}

      難点として、改行を自身で行わなければならない。いい方法をご存知の方は教えてください。

      以上だと、編みかけ部分が大き過ぎると感じるかもしれないので、以下のように改善できる。

      (但し、私が内容をきちんと理解していないので、参考まで。参照: A macro that expands to the length of its argument - TeX - LaTeX Stack Exchange)

      1\newcommand{\reducedstrut}{\vrule width 0pt height 0.95\ht\strutbox depth 0.9\dp\strutbox\relax}
      2\newcommand{\reverse}[1]{%
      3\begingroup
      4\setlength{\fboxsep}{0pt}%
      5\colorbox[named]{Black}{\reducedstrut\color[named]{White}\textbf{#1}}%
      6\endgroup
      7}
  • web 上のチルダ

    エンコーディングをうまく選ばなければ、リンクなどを設定することができない。

    うまく書くには、プリアンブルに
    1\usepackage[T1]{fontenc}
    として、
    1http://www-cc.gakushuin.ac.jp/{\usefont{T1}{qpl}{m}{n} \textasciitilde}20110166/
    とする。
    または、プリアンブルに、
    1\usepackage[T1]{fontenc}
    2\newcommand{\webtilde}{\usefont{T1}{qpl}{m}{n} \textasciitilde}
    \webtildeを定義して、簡単に、 とすれば良い。

  • 外部ファイルを読み込む。

    • LaTeX ファイルを読み込む

      長い文章を書いていると、各章ごとにファイルを分けるなどしたくなる。その場合は、\input や \include を用いれば可能です。 (参照: LaTeX の分割ソース: input vs include のメモ)

      外部ファイル setting.tex および chapter_i.tex (i = 1,2,...,5) を挿入する場合以下のようにする。\input はプリアンブルを含めてどこに書いてもいいですが、\include は\begin{document} と \end{document} の間のみで使うことができます。

      1\documentclass[12pt]{article}
      2\input{setting}
      3\begin{document}
      4\input{chapter_1}
      5\input{chapter_2}
      6\include{chapter_3}
      7\include{chapter_4}
      8\include{chapter_5}
      9\end{document}
      include はプリアンブルではつかえませんが、一方で、プリアンブルにて \includeonly{chapter_4,chapter_5} などすれば、記述したもののみ挿入してくれるので便利です。

    • プログラムコードを挿入する。

      LaTeX のファイルに外部ファイルとしてプログラミングコードを挿入したい場合があります。上のように LaTeX ファイルだと問題ありませんが、プログラムコードをそのまま \input または \include すると LaTeX コマンドと間違えてエラーが起きます。ですので、verbatim.sty を読み込んで、\verbatiminput{program_file.f90} などとします。

      1\verbatiminput{program_file.f90}
      ソースコードを綺麗に表示するには、 jlistingでソースコードを綺麗に表示す が参考になります。

  • 細かいこと

    数式で、gh などルートの高さが異なることがよくある。一般的にはこれで正しいが、ときどきそれらを揃えたいときがある。こういうときに、括弧「(」と同じ高さを持つ空白を導入することができる。

    1\sqrt{g} + \sqrt{h}; \sqrt{\mathstrut g} + \sqrt{\mathstrut h}
    出力: g+h;(g+(h

注意すること。

  • スペースと改行の扱いに注意する。
    LaTeX だと、スペースや改行は特殊文字として扱われる。なので、改行してコードを見やすくするためには % を使う。(例 1 と 2 が同じ結果を与え、例 3 と 4 が同じ結果を与える。)
    (参照: spacing - Remove space before colorbox - TeX - LaTeX Stack Exchange)
    例1)
    1\newcommand{\yourcommand}[1]{ \colorbox{red}{#1} }
    例2)
    1\newcommand{\yourcommand}[1]{
    2  \colorbox{red}{#1}
    3}
    例3)
    1\newcommand{\yourcommand}[1]{\colorbox{red}{#1}}
    例4) (オススメ)
    1\newcommand{\yourcommand}[1]{%
    2  \colorbox{red}{#1}%
    3}
  • 古いコマンドで今後のサポートが無くなるので使うべきではないコマンド → 今後使うべきコマンド (参照: 使ってはいけない LaTeX のコマンド・パッケージ・作法)
    \begin{eqnarray} → \begin{align}
    eqnarray には行番号が数式と被るなどのバグがあり無くなる予定である。
    {\∗∗ テキスト} → \text∗∗{テキスト}
    ∗∗ = bf, rm, it。文字修飾の指定範囲が分かりにくいので、後者に置き換わる。

TikZ / PGF

TeX 用の描画パッケージ。

使い方は以下の記事が参考になります。
簡易マニュアル (PDF)
マニュアル (PDF)

  • 設定と環境
    • プリアンブルに以下を追加 (参照:TikZ は dvipdfmx をどこまでサポートするか? (1) -- マクロツイーター)
      1\documentclass[dvipdfmx]{article} % ドライバをグローバルオプションで指定
      2\usepackage{tikz}
    • 一行コマンド
      1\tikz \draw (0,0) -- (0,1);
      複数行コマンド
      1\begin{tikzpicture}[オプション]
      2  \draw (0,0) -- (0,1);
      3  \draw (0,0) circle (2pt);
      4\end{tikzpicture}
      オプションには、scale=1.5 など書けば図が小さいときに簡単に拡大できて便利。
    • コマンドの最後にセミコロン ; を忘れない。
    • 単位を省いたときは、cm が用いられる。
  • 基本の書き方 (" Actions on Paths " 参照)
    • Path について。
      まず、基本的には、Path (\path) を設定しなければならない。Path を定義して、その中に書かれたことを実行する。例えば、
      1\path (0,0) circle (1cm);
      とすると、「Path を定義し、それの原点に半径 1 cm の円がある」ということになる。ただし、書き出す支持は無いので、画面上には何も起こらない。
      これを画面出力するためには、\draw オプションが必要となる。ただし、\draw オプションは Path の中ならどこに書いてもいい。以下は全て同じ出力を行う。
      1\path [draw] (0,0) circle (1cm);
      2\path (0,0) [draw] circle (1cm);
      3\path (0,0) circle (1cm) [draw];
      しかし、このコマンドは冗長であるため、短縮コマンド \draw = \path [draw] が準備されている。同様に、内部を塗りつぶす [fill] オプションも用意されており、例えば、以下は全て同じ出力となる。
      1\path [draw,fill]   (0,0) circle (1cm);
      2\path [draw] [fill] (0,0) circle (1cm);
      3\path [fill] (0,0) circle (1cm) [draw];
      4\draw [fill] (0,0) circle (1cm);
      5\fill (0,0) [draw] circle (1cm);
      6\filldraw (0,0) circle (1cm);
      以下に短縮コマンドの一覧を示す。
      短縮コマンド 実行内容
      \draw \path [draw]
      \fill \path [fill]
      \filldraw \path [fill,draw]
      \pattern \path [pattern]
      \shade \path [shade]
      \shadedraw \path [shade,draw]
      \clip \path [clip]
      \useasboundingbox \path [use as bounding box]
      \node \path node
      \coordinate \path coordinate
      \pic \path pic
    • 線の太さについて。
      \draw コマンドで描かれる線の太さをオプションで選ぶことができる。
      1\draw [line width=5] (0,0) -- (-1,2);
      単位を省いた場合は pt が用いられる。上の場合は太さ 5 pt の線が引かれる。
      名前の付いた線の太さは以下である。
      • ultra thin
      • very thin
      • thin
      • semithick
      • thick
      • very thick
      • ultra thick
    • 線種について。
      \draw コマンドで描かれる線種をオプションで選ぶことができる。
      1\draw [dash pattern=0n 2pt off 3pt on 4pt off 4pt] (0,0) -- (1,2);
      これは、実線 2 pt 空白 3 pt 実線 4 pt 空白 4 pt を繰り返す線を引くコマンドである。 さらに、
      1\draw [dash phase=2pt, dash pattern=0n 2pt off 3pt on 4pt off 4pt] (0,0) -- (1,2);
      とすれば、2 pt 進んだところから先のパターンで描画される。オプションはカンマで連ねても良い分けてもいいし、分けても良い。
      1\draw [dash phase=2pt]
      2      [dash pattern=0n 2pt off 3pt on 4pt off 4pt] (0,0) -- (1,2);
      デフォルトで名前が用意されている線種はいくらかある ("Graphic Parameters: Dash Pattern" 参照)。
      以下のように使う。
      1\draw [solid, dash phase=2pt] (0,0) -- (1,1);
      • solid
      • dotted
      • densely dotted
      • loosely dotted
      • dashed
      • densely dashed
      • loosely dashed
      • dash dot
      • densely dash dot
      • loosely dash dot
      • dash dot dot
      • densely dash dot dot
      • loosely dash dot dot
    • 矢印について。
      \path \draw (\draw) にて矢印のオプションを付けることで描画される。
      1\draw [->] (0,0) -- (1,2);
      異なる矢印を付けるには、例えば LaTeX の v で使われる矢印は、
      1\draw [-{Latex[]}] (0,0) -- (1,2);
      または、
      1\draw [arrow={-Latex[]}] (0,0) -- (1,2);
      などとすれば良い。
      異なる種類の矢印 (arrow tip) は "Reference: Arrow Tips" 参照のこと。
    • 色について。
      名前の付いた色は以下のものである。
      • red
      • green
      • blue
      • cyan
      • magenta
      • yellow
      • black
      • gray
      • darkgray
      • lightgray
      • brown
      • lime
      • olive
      • orange
      • pink
      • purple
      • teal
      • violet
      • white
  • 使い方の例
    • 線を描く。(0,0) から (0,1) まで。
      1\draw (0,0) -- (0,1);
      折れ曲がったひとつながりの線を書く。(0,0) → (0,1) → (1,0)
      1\draw (0,0) -- (0,1) -- (1,0);
      閉じた線を描く。
      1\draw (0,0) -- (0,1) -- (1,0) -- cycle;
      矢印を書く。
      1\draw [->] (0,0) -- (1,0); %右向き
      2\draw [<-] (0,1) -- (1,1); %左向き
      3\draw [<->] (0,2) -- (1,2); %両方向き
    • 円を描く。(0,0) 中心に半径 1 で。
      1\draw (0,0) circle (1);
      塗りつぶされた円を描く。灰色で。
      1\filldraw [gray] (0,0) circle (1);
    • 文字を書く。(0,0) に $O$ と描く。
      1\draw (0,0) node {$O$};
    • 格子を描く。1 刻みに (-3,-3) から (3,3) まで。
      1\draw[step=1] (-3,3) grid (3,3);
    • 足し算で位置の指定もできる。(1,1) からベクトル (1,1) を描く (つまり、(1,1) -- (2,2))。
      1\draw [->] (1,1) -- (2,2); %以下全て同じ
      2\draw [->] (1,1) -- (1+1,1+1);
      3\draw [->] (1,1) -- +(1,1);
    • ループ処理を行う。円を並べて 7 個描く。
      1\foreach \x in {1,...,7}
      2  \draw (\x,0) circle (5pt);
      ループを重ねて、上の格子点上に灰色の円を描く。
      1\foreach \x in {-3,...,3}
      2  \foreach \y in {-3,...,3}
      3    \filldraw [gray] (\x,\y) circle (5pt);
      プラケットの真ん中 (最近接の 4 格子点の真ん中) に番号を振る。
      1\foreach \x in {-3,...,3}
      2  \foreach \y in {-3,...,3}
      3    \draw (\x+0.5,\y+0.5) node {$(\x,\y)$};
      上記 2 つのことを同じループで一気にする。
      1\foreach \x in {-3,...,3}
      2  \foreach \y in {-3,...,3}
      3    {
      4      \filldraw [gray] (\x,\y) circle (5pt);
      5      \draw (\x+0.5,\y+0.5) node {$(\x,\y)$};
      6    }

emath

グラフの作成など。数学教材作成に便利なパッケージ群。

  • 設定
    • Perl を使うために必要なファイルの置き場所について
      (参考: perl との連携 - PukiWiki)
      emath.pl 等を、 としたときに表示されるディレクトリに入れる。
      ただし、コマンドラインから perl -V とした場合と、 TeXShop.app などで実行される perl -V では場所が異なることがあるので、注意。その場合は、自作スクリプトを作って、TeXShop.app から実行させて log を見るか、TeXShop.app からの実行で得られたエラーを見る。
    • --escape-restricted
      --escape-enabled よりも少し安全な、システムにアクセスする方法を提供
      emath.sty と同じディレクトリに、hoge.sty を作成
      中身は
      1\setPerlName{huga}
      とする。
      latex コマンドのあるディレクトリに (>which latex で確認)、huga を作成
      中身は
      1#!/bin/sh
      2perl $1
      とする。(Mac/Linux の場合)
      実行権限を与える。
      1$ chmod a+x huga
      ここで、全てのユーザー (a) に実行権限を与える必要があることに注意。
      texmf.cnf ファイルを編集。私の場合の texmf.cnf の場所:
      /usr/local/texlive/2013/texmf.cnf
      自分の設定はここに書けとあるので、以下を追加。
      1shell_escape_commands = huga
      最後に、tex のファイルの中で、
      1\usepackage{hoge}
      とすればよい。
  • コマンド
    HenKo<henkotype=paralle>{(x1,y1)}{(x2,y2)}{word}:辺に長さを記入
    (x1,y1),(x2,y2):辺の端の座標
    word:書き込む長さ
    En[*]<border>{(x,y)}{r}:円を描く
    *:塗りつぶし
    (x,y):中心位置
    r:半径
    border:外縁を描く(*のとき)

自分用のノートフォーマット

以下の \input コマンドを用いて基本パッケージを読み込むようにすると .tex 自体はシンプルになるので良い。 いつも使う基本のテンプレートは、~/Library/texmf/tex/format/settings.tex に置いている。
01\documentclass[10pt,dvipdfmx,fleqn,twoside]{jreport}
02\input{settings} % misc settings
03\draftmarksetup{color=gray,grayness=0.85,mark={\textcolor{red!35}{M}.Takahashi},coordunit=cm,angle=90,scale=0.5,xcoord=9.8,ycoord=-8.6}
04\title{*****}
05\author{Masahiro Takahashi\\
06Department of Physics, Gakushuin University}
07\date{\today}
08 
09\begin{document}
10\section{bar}
11\subsection{foo}
12\subsubsection{poyo}
13\DTMnow
14\today
15\DTMcurrenttime
16\lipsum[1-2]
17\end{document}
01\usepackage{docmute}
02\usepackage{graphicx}
03\usepackage{dcolumn} %extend format of the tabular
04\usepackage{bm} %bold + italic font
05\usepackage{mathrsfs} %white bold font
06\usepackage{cite} %citation
07\usepackage{fancyhdr} %headers and footers
08\usepackage{xcolor} %color text
09\usepackage{colortbl} %colored tabular
10\usepackage[showzone=false,yearmonthsep=/,monthdaysep=/]{datetime2} %date + time
11\usepackage{ulem} %slash to delete text
12\usepackage{braket} %braket
13\usepackage{amsmath} %\ref{} -> \eqref{}
14\usepackage{amssymb} %\mathbb
15\usepackage{cases} %use cases
16\usepackage{array,arydshln} %extend matrix style
17\usepackage{fancybox}
18\usepackage{multicol} %multicolumn layout
19\usepackage{comment} %extend comment
20\usepackage[draft,evenpages]{draftmark} %draftmark
21\usepackage{tikz}
22\usepackage[top=1cm,bottom=1cm,left=1.5cm,right=1.5cm,headheight=10mm,headsep=8mm,includehead,includefoot]{geometry} %use showframe option for visualize
23\usepackage{hyperref}
24\usepackage{lipsum} %Lorem ipsum
25 
26% option for tikz %
27\usetikzlibrary{decorations.markings,decorations.pathmorphing,calc,arrows.meta,intersections,angles,quotes}
28 
29% option for fancyhdr %
30\pagestyle{fancy}
31\fancyhf{} % clear all fields
32\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
33\fancyhead[LO]{\thesection ~\leftmark}
34\fancyhead[RE]{\thesection ~\leftmark}
35\fancyhead[LE,RO]{\DTMnow}
36\fancyhead[C]{\jobname{.txt}}
37\fancyfoot[RE,LO]{高橋雅裕}
38\fancyfoot[RO,LE]{\thepage}
39 
40% definition for math %
41\newcommand{\bs}{\boldsymbol}
42\newcommand{\vecp}[1]{\vec{#1}~\!'}
43\renewcommand{\d}{\mathrm{d}}
44\providecommand{\abs}[1]{\lvert#1\rvert}
45\providecommand{\Abs}[1]{\left\lvert#1\right\rvert}
46\providecommand{\norm}[1]{\lVert#1\rVert}
47\providecommand{\Norm}[1]{\left\lVert#1\right\rVert}
48\everymath{\displaystyle}
49\allowdisplaybreaks[1] %<--- 0 for no newpage in the equation environment
50 
51% format for sections %
52\renewcommand{\thesection}{\arabic{section}.}
53\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}.}
to the top