« ^ »
[WIP]

TeXを最初から学ぶ

所要時間: 約 3分

唐突にTexLive 2023の環境を使う。

パスを通して使いやすくする

各種コマンドは、私の環境では以下のディレクトリにインストールされている。

/usr/local/texlive/2023/bin/universal-darwin

Emacsから使用しやすくするためパスを通す。

(add-to-list 'exec-path
	     "/usr/local/texlive/2023/bin/universal-darwin")
(setenv "PATH" (string-join exec-path ":"))

最小のTeX

まずは小さな TeX 形式のファイルを作成する。

Hello, world! 
\end

\end は常に必要だ。おそらくこれが最小の TeX のように思う。

この最小の TeX を変換してみよう。 tex というコマンドがある。このコマンドを使い、texファイルをdviファイルに変換できる。

tex simple.tex
This is TeX, Version 3.141592653 (TeX Live 2023) (preloaded format=tex)
(./simple.tex [1] )
Output written on simple.dvi (1 page, 212 bytes).
Transcript written on simple.log.

DVIとEmacs

DVIは、文書の見た目を画像形式・表示デバイス・プリンタにまったく依存せず保存する1tex は、 TeX 形式で記述されたファイルを読み込み、DVIファイルを出力する。

DVIはフォントを格納しないため、フォントはシステムに予めインストールする必要がある。DVIやその他のツールの説明は、pTexのドキュメントが役に立つかもしれない2

Emacsはdoc-modeによって、DVIファイルを表示できるかもしれないが、僕の環境ではそれはできなかった。少しインターネットを探すと、dvi-view-modeなるものを見つけた。これは dvipng によってdviをpngに変換させた後、バッファに張り付けるもののようだ。ただし、これも上手く動かす事ができなかったため、手動で dvipng を実行し、PNGファイルを開き確認する事にした。 dvi-view.el は直接curlでダウンロードして、Emacs Lispを評価した。

curl -o dvi-view.el https://www.emacswiki.org/emacs/download/dvi-view.el

https://www.emacswiki.org/emacs/download/dvi-view.el

texdoc

TeX のドキュメントを参照するためのコマンドとして texdoc が提供されている。

TeXのプリミティブ

TeX には数多くのプリミティブのコマンドがある。 TeX のオンラインエディタ overleaf のドキュメントは、プリミティブの一覧を掲載している3。ここではいくつかのプリミティブの挙動を確認する。

文字列操作

簡単な例から始めよう。記述している英文字列を全て大文字や小文字にする場合、=\uppercase= や \lowercase を使用する。

\uppercase{Hello, world!}
\lowercase{Hello, world!}
\end

このファイルを tex コマンドで DVI に変換した後、 PNG に変換する。

tex primitive-text-manipulation.tex
dvipng primitive-text-manipulation.dvig

これは次のような画像となる。

https://res.cloudinary.com/symdon/image/upload/v1701949353/blog.symdon.info/1701743259/primitive-text-manipulation1.png

日本語を含める

初期設定のままでは、日本語などの文字は表示できないだろう。 \setmainfont でフォントを設定する必要がある。

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Hiragino Mincho ProN}
\begin{document}
こんにちは
\end{document}

また texlatex では、これらの設定を正しく処理できない。 xelatexlualatex を使う事で、フォントの設定を正しく読み込める。

xelatex char.tex

または

lualatex char.tex