LaTeX のツールは様々あるものの,使う際になるまで全く知らない謎のツールが多く存在するだけになってしまう.
よく使われるツールを一覧にして,どのようなツールが存在するのか明らかにしておきたい.ただし,本記事ですべてのツールが網羅されているわけではないことに注意しておきたい.
本記事ではツールの概要のみを明示し,ツールの利用方法については詳細に触れない.それぞれの公式ドキュメントやツールに関する他の記事を参照してほしい.
いくつかのツールがPerl 言語で書かれるスクリプトであり,Windows 以外ではPerl 環境も整える必要がある.(Windows ではexe で提供されている)
TOC
- Search about LaTeX on SNS
- LaTeX Engine
- Build Tool
- Editor
- Useful Tool
- Document Citation and Index
- External LaTeX Compiler
- Issue and Question
- Other Tools
本編は# Build Tool と# Useful Tool である.それ以外はほとんど余談.
また,Twitter やQiita でこれらのLaTeX 関連を検索できるようにURL を作成しておいた.以下の節で詳細を示しておきたい.
Twitter やQiita でLaTeX に関するツイートを検索したい.
Twitter では普通に"LaTeX" と検索するとテロテロのラバースーツを着た人が出てくる.欲しい情報はこれではない."OXOXLaTeX" のような形で検索したいが,数が多すぎるためにいちいち検索ボックスに打つのも面倒くさい.いくつかのグループごとに検索するためのURL を作成しておきたい.
latex OR tex OR #latex OR #tex lang:ja
LaTeX について検索するにはあまりうまく機能しない検索方法になる.
また,Twitter で調べる程度の情報なので日本語のみに限って検索するようにしたい.もしも日本語での検索をしたくない場合にはlang:ja
を外せば良い.
ただし,いくつかのワードにおいてアカウントID に含まれているワードがあった.そのため,検索すると特定のアカウントが複数出てきてしまう.これを避けるためにあえて検索ワードに含めていないものもある.
以下のようなTwitter 検索リンクを設置しておいた.プレースホルダをリンクとしており,コードブロックで検索ボックス内容を示している.
#TeXLaTeX
CTAN の更新等は以下の公式Twitter から見ることが出来る.
また,LaTeX の難解さで困っている人は以下のようにすると多く見られる.みんな分からないよね.
latex OR tex 分からん OR わからん
Twitter と同じようにQiita でも同じようなプレースホルダをリンクとしていくつかのところに設置しておいた.シンプルにタグのみを検索するようにした.
Qiita でもLaTeX について見ることが出来る.
about LaTeX
TeX とLaTeX が混同されているので,TeX でもLaTeX とほぼ同等の内容を見ることが出来る.
about TeX
今よく利用されているであろうLaTeX エンジンについて一覧にしておく. これらのLaTeX エンジンはUTF-8 で編集することを想定している.
Language | LaTeX Engine |
---|---|
Japanese | upLaTeX+dvipdfmx, LuaLaTeX, (XeLaTeX) |
English | pdfLaTeX, LuaLaTeX, XeLaTeX ...etc |
日本語でLaTeX するならupLaTeX +dvipdfmx かLuaLaTeX を利用するようにしたい.ちなみに,upLaTeX +dvipdfmx はptex2pdf から一括で実行することも可能となっている.
英語圏でのLaTeX エンジンについては詳しくないが,上の表にあるようなエンジンがよく利用されているようだ.
platex OR uplatex OR dvipdfmx OR ptex2pdf OR lualatex OR luatex-ja OR xelatex OR pdflatex lang:ja
dvipdfmx はDVI ファイルからPDF に変換するドライバだが,LaTeX エンジンと混同されがちなのでこれに含めておいた.
また,LaTeX エンジンに伴ってドキュメントクラスも対応したものを選択する必要がある.一般的なものであれば,以下のような表で示すことが出来るだろう.
LaTeX Engine | Document Class |
---|---|
upLaTeX + dvipdfmx |
jlreq, jsclasses, bxjscls |
LuaLaTeX | jlreq, ltjsclasses, bxjscls |
article やjarticle を指定しないように注意しておきたい.
jsclasses OR jsarticle OR jsreport OR bxjscls OR bxjsarticle OR bxjsreport OR bxjsbook OR jlreq lang:ja
jsbook については省略した.
日本語LaTeX ドキュメントにおいて,どのLaTeX エンジンを利用するべきかは各個人の主義思想に依存している.
特にこだわりのない場合には,利用シーンによって判断すると良いだろう.個人的な利用レベルでは以下のようなシーン別にエンジンを利用すると良いだろう.
LaTeX Engine | Scene |
---|---|
upLaTeX + dvipdfmx |
卒論などで一時的に利用する場合 |
LuaLaTeX | 長い期間利用することが想定される場合 |
また,研究会などに寄稿する場合には特定の文書クラスが配布される場合があり,この文書クラスが(u)pLaTeX にしか対応していない場合がある.この場合にも(u)pLaTeX を利用することになるだろう.
したがって,日本語でLaTeX する限りには(u)pLaTeX を利用することから(ほとんど) 逃れられない可能性がある.
今後の展望として,pLaTeX (upLaTeX の前進) は使えなくなる可能性があるとされている.日本語を処理するLaTeX 開発がどのような展開を迎えるかは分からないが,いずれにしてもLuaLaTeX に移行していく(あるいは使える知識を付けておく) 必要はあると思われる.
1にupLaTeX ,2にLuaLaTeX を利用すると良いと思われる.
upLaTeX とLuaLaTeX の利用について書いてきたが,pLaTeX は2021年6月現在,近い将来には使えなくなる可能性があるとされている.
詳細は上の記事を参照してほしいが,LaTeX カーネルが新しいものに変更されることに伴って,パッケージなども変更されるためにpLaTeX が追従できなくなるとされている.
pLaTeX の拡張であるupLaTeX も危うくなる可能性があるようだが,pLaTeX ほど緊急性が高いわけではないようだ.
現状,XeLaTeX で日本語文書をタイプセットすることは可能となってはいるが,他のLaTeX エンジンに比べて日本語処理が上手ではない. XeLaTeX で頑張ってまともにタイプセットしようとしている記事はいくつかあるが,問題が生じた場合の解決策は自力で見つけ出す必要が生じることが多いと思われる.
したがって,日本語LaTeX ドキュメントをXeLaTeX で処理するには以下の2点から避けた方が良いと思われる.
- うまく日本語が処理できない
- リファレンスが少ないので自力で解決する必要が生じる可能性がある
あまり積極的にXeLaTeX を利用して日本語LaTeX をする必要は無いと思われる. 開発する人が現れれば,XeLaTeX で日本語LaTeX が標準になる日も来るかもしれない.
少し本編.
上で紹介したLaTeX エンジンを実行しても相互参照の問題が解消しない場合がある.これは相互参照を利用している場合に数回のタイプセットを必要とするためである.
このような問題を解消するために相互参照の問題が解決するまで繰り返し実行するためのツールが存在する.以下の表で3つを紹介する.おそらくこれらが日本でもっとも利用されているタイプセットツールになる.
Build Tool | Feature |
---|---|
latexmk | 適切なLaTeX エンジンを自動選択してタイプセットする |
ClutTeX | 補助ファイルでディレクトリを散らかさない |
llmk | タイプセット方法を各LaTeX ドキュメント内で明示 |
Repository
よく記事にされているタイプセットツールはlatexmk だと思われる.
ClutTeX とllmk の開発者は日本人が中心となっている.(場合によってはIssue を日本語で挙げても怒られないとは思われる)
また,ご本人の記事もあるので参照してみると良いだろう.
ClutTeX
llmk
これらのどのツールを利用してタイプセットしても問題ないが,ドキュメントを共有したり大型のドキュメントを作成する場合にはいくつかの注意を払って選択すると良いだろう.
もちろんmake などの汎用ツールを利用しても問題ないが,TeX Live などのディストリビューションを導入するだけで実行できるようにしておく方が有用だと思われる.
#llmk OR latexmk OR cluttex OR llmk #llmk OR latexmk OR cluttex OR tex OR latex lang:ja
llmk のみを検索するとまったく関係ないツイートが参照されるので注意が必要.
基本的にテキストエディタであればどのツールでも問題なく編集することが出来る.極論,メモ帳で問題ない.
しかしながら,以下のようなエディタであればさまざまな支援を得ることが出来る.これはかなり強力な機能となっている.また,タイプセットもショートカットキーから実行することが出来る.
- TeXworks
- TeXShop
- TeXstudio (TeXmaker の派生)
- LaTeX Workshop on VSCode
- YaTeX on Emacs
- Atom and extensions for LaTeX
- LyX (WYSIWYG に対してWYSIWYM: What You See Is What You Mean を掲げている)
- Vim
TeXworks はWindows 用のTeXLive に標準で搭載されており,初心者なら一番初めに触るエディタとなると思われる.基本的な機能が最低限あると言った感じ.
VSCode やAtom などのIDE (統合環境)にLaTeX 専用の拡張機能を利用する方法は,最近かなり利用者が増えているようだ.これらに関する記事も多数あり,初期設定もどうにかなるだろう.
texworks OR texshop OR texstudio OR texmaker OR "latex workshop" OR yatex OR #lyx OR latex texworks OR texshop OR texstudio OR texmaker OR "latex workshop" OR yatex OR #lyx OR vscode OR atom OR emacs OR vim OR lyx lang:ja
少々ややこしい検索になっている.
以下の2つの検索結果を含めるような形にしている.texworks OR texshop OR texstudio OR texmaker OR "latex workshop" OR yatex OR #lyx
vscode OR atom OR emacs OR vim OR lyx latex
やっと本編.さまざまなツールがある.
これらのツールはデフォルトでは日本語に対応していない.そのため,日本語に対応させる必要がある.
おおよそは公式ドキュメントに記載されているので,これを参照すれば良いだろう.あるいは,先人が記事にしてくれているのを参照すると良い.
latexindent OR chktex OR lacheck OR latexdiff OR latexpand lang:ja
インデントを設定することが出来る.
設定でかなり細かく指定できるので,そのまま利用せずに公式ドキュメントを参照して変更すると良いだろう.
LaTeX 構文でおかしな箇所を静的解析して指摘してくれる.
ChkTeX は開発が止まっている?
LaCheck を利用すると良いと思われる.
2つのファイルから差分を取ることが出来る.
latexdiff の拡張としてlatexdiff-vc があり,これであってもGit などとのバージョン管理ツールと連携して差分を取ることが出来る.
また,別のツールであるgit-latexdiff では,latexdiff-vc よりもより細かい制御が可能となっている.
\input
や\include
などで分割しているファイルを統合してくれる.
文献引用や索引作成にはBibTeX やmendex が必要になる.
bibtex OR pbibtex OR upbibtex OR mendex OR upmendex lang:ja
また,文献の管理と文献引用の作成補助ツールに関してもいくつかの種類がある.
about Document Management Tool
zotero OR mendeley OR endnote OR paperpile OR refworks lang:ja
ローカルにLaTeX 環境を構築せずともLaTeX を使う方法はいくつか存在する. 以下のような方法になる.
- オンラインLaTeX エディタ
- Docker
いずれの方法であってもさまざまな記事があるので,それらを参照してほしい. ただし,必要なパッケージなどが含まれていない可能性がある点だけは問題になることがある.
Cloud LaTeX やOverleaf では共同編集が可能であり,複数人で編集する場合には容易になる場合がある.
Docker については,初心者にとってコンテナを作成するには学習コストが高すぎる気もする.
また,いくつか公開されているコンテナでは軽量化を目指したために欲しいパッケージが足りない場合もある.オンラインLaTeX エディタを利用する方がまだ豊富にあるだろう.
しかし,Docker が使えればGitHub Actions でgit push すればタイプセットしてリリースするようにリポジトリを作成できるため,利用価値は非常に高くなる.個人で必要な分だけを導入したDocker コンテナを作成すると良いだろう.
おそらく,よく知られているDoker コンテナは以下だと思われる.
参考記事を紹介しておく.
また,pLaTeX が利用できなくなる可能性を考慮してDocker コンテナ化しておくのも重要になる可能性がある.
Docker を利用するにしても,Cloud LaTeX を利用するにしても,VSCode をエディタとすると簡単にLaTeX を編集することが出来るようになる.
"cloud latex" OR overleaf OR "alpine texlive ja" OR latex "cloud latex" OR overleaf OR "alpine texlive ja" OR docker lang:ja
Official account
LaTeX でタイプセットしていると途中で止まってしまうことがある.この場合,さまざまなコミュニティやSNS で質問することがあるが,これらの場で質問するときの必要事項を挙げておきたい.
- OS
- ディストリビューション (TeX Live20** など)
- 実行コマンドライン (引数も必要な場合がある)
- 警告を再現する最小コード
- LOG ファイル
また,問題がLaTeX 文書クラスやパッケージにあるのか,組み方にあるのか,エディタにあるのかなどある程度,質問者が原因を特定できる. これらについては先んじて調べておく必要があると思われる.場合によってはタイプセットツールを変えてみるなども必要かもしれない.
単に問題を総投げしても解決できない場合が多分にある.
あまり気にしていない場合もあるが,LaTeX の文書クラスやパッケージ,エンジンも適宜更新されており,バージョンによって生じているエラーの場合もある.
質問する際にここまで挙げる必要はないかもしれないが,更新するとエラーが治ることや,更新によってエラーが生じることなどもある.どうしてもエラーの原因が特定できない場合にはこれを気にしても良いだろう.
texlive OR w32tex OR mactex OR miktex lang:ja
TeX で図形を描いたりスライドを作成するにはPGF(Portable Graphics Format) によって提供されるTikZ やBeamer などを利用する.
tikz OR beamer OR pgf latex OR tex lang:ja
HTML で数式LaTeX を利用する場合には以下のようなパーサが必要になるだろう.
mathjax OR katex lang:ja
数式をMS PowerPoint やKeynote などで利用したい場合には以下のようなツールを利用すると画像化できて良いだろう.
tex2img OR latexit OR "iguana tex" lang:ja
TeX2img やLaTeXiT は数式に限らず汎用的にLaTeX を画像化することが出来る.
あるいは,構築したTeX 環境のみでも以下のようなクラスやパッケージを利用することで余白のないPDF を作成することが出来る.
- standalone クラス
- preview パッケージ
- pdfcrop (PDF の余白のトリミングツール)
about "standalone class" and "preview package" and pdfcrop
standalone OR preview OR pdfcrop クラス OR パッケージ OR pdfcrop tex OR latex OR pdfcrop lang:ja
初めから,何に使えるどんなツールがあるのか一覧にしてドキュメントにしておいてほしい.
この他にもPDF を取り扱うツールもWindows 用のTeX Live にいくつか搭載されている.これらも見ておくとよりさまざまなことに利用できるようになるだろう.
ツールだけ書こうとしたらエンジンについても書いていた.また,エディタについても書いていた.びっくり.
エディタについては個人の思想に依るところが大きいので,どのようなエディタを利用していても問題ないが,筆者がいま利用しているエディタはLaTeX Workshop on VSCode である.
過去に利用していたエディタはTeXworks だけだが,一時期TeXstudio を使おうとしてダウンロードだけしたこともある.
TeXworks は今思えば最小限度のTeX 用エディタだったなぁと感じている.TeXstudio やLaTeX Workshop on VSCode は設定が野暮に感じるかもしれない.なんなら挫折する可能性もある.
しかしながら,これらを利用しているとTeXworks には戻れないほど使い勝手が良い.
また,IDE の強みはLaTeX 以外の言語も取り扱うことが出来る点である.プログラミング言語でなくても,markdown はLaTeX と並行して利用すると良いだろう.
markdown 用のエディタ,LaTeX 用のエディタなど分けて導入するよりも,統合環境で利用した方が何かと楽になるのではないだろうか.(VSCode ではNotion のための拡張機能もあるようだ)
このことに付随して,YAML などの設定ファイルをいじる際にもIDE では自動的にシンタックスハイライトを与えてくれるので便利だと思われる.
LaTeX ドキュメントをPDF に変換する言い方はいくつかあるように感じる.以下のような3つである.
- ビルド
- タイプセット
- コンパイル
どれを使っていてもTeX → PDF を意味している.
Twitter でLaTeX について調べるなんて変態だろ()
URL | Charactor |
---|---|
%20 |
(半角スペース) |
%22 |
" |
%23 |
# |
lang:ja
で日本語圏での検索,OR
で区切ることでor 検索が出来るようになる.
また,以下のような検索をすると"A
B
C
のいずれか" かつ"D
E
のいずれか" と言うような検索が出来るという知見を得た.
A OR B OR C D OR E
また,"A
" と"B
またはC
" の2つの検索結果を同時に出したい場合には以下のようにしてしまえば良い.
A OR B A OR C
A
かつA
, A
かつC
, B
かつA
, B
かつ C
を検索しているため,A
の検索はA
のみで実行される.
Shields.io を利用してTwitter プレースホルダを作成している.
https://img.shields.io/badge/Search_on-Twitter-1DA1F2.svg?style=plastic&logo=twitter
良い感じのボタンを作成できるのですき.