Skip to content

Instantly share code, notes, and snippets.

@yarakos95
Last active July 10, 2021 13:48
Show Gist options
  • Save yarakos95/c8fe425e5b6dfdd6dce3e5db1299f4da to your computer and use it in GitHub Desktop.
Save yarakos95/c8fe425e5b6dfdd6dce3e5db1299f4da to your computer and use it in GitHub Desktop.
LaTeX ツールを一覧したい

LaTeX Tools List

LaTeX のツールは様々あるものの,使う際になるまで全く知らない謎のツールが多く存在するだけになってしまう.

よく使われるツールを一覧にして,どのようなツールが存在するのか明らかにしておきたい.ただし,本記事ですべてのツールが網羅されているわけではないことに注意しておきたい.

本記事ではツールの概要のみを明示し,ツールの利用方法については詳細に触れない.それぞれの公式ドキュメントやツールに関する他の記事を参照してほしい.

いくつかのツールがPerl 言語で書かれるスクリプトであり,Windows 以外ではPerl 環境も整える必要がある.(Windows ではexe で提供されている)

TOC

本編は# Build Tool# Useful Tool である.それ以外はほとんど余談.

また,Twitter やQiita でこれらのLaTeX 関連を検索できるようにURL を作成しておいた.以下の節で詳細を示しておきたい.

Search about LaTeX on SNS

Twitter やQiita でLaTeX に関するツイートを検索したい.

Twitter では普通に"LaTeX" と検索するとテロテロのラバースーツを着た人が出てくる.欲しい情報はこれではない."OXOXLaTeX" のような形で検索したいが,数が多すぎるためにいちいち検索ボックスに打つのも面倒くさい.いくつかのグループごとに検索するためのURL を作成しておきたい.

twitter-search about TeX LaTeX

latex OR tex OR #latex OR #tex lang:ja

LaTeX について検索するにはあまりうまく機能しない検索方法になる.

また,Twitter で調べる程度の情報なので日本語のみに限って検索するようにしたい.もしも日本語での検索をしたくない場合にはlang:ja を外せば良い.
ただし,いくつかのワードにおいてアカウントID に含まれているワードがあった.そのため,検索すると特定のアカウントが複数出てきてしまう.これを避けるためにあえて検索ワードに含めていないものもある.

以下のようなTwitter 検索リンクを設置しておいた.プレースホルダをリンクとしており,コードブロックで検索ボックス内容を示している.

twitter-search about "#TeXLaTeX"

#TeXLaTeX

CTAN の更新等は以下の公式Twitter から見ることが出来る.

TeX Users Group (@TeXUsersGroup) / Twitter

また,LaTeX の難解さで困っている人は以下のようにすると多く見られる.みんな分からないよね.

twitter-search about LaTeX 分からん

latex OR tex 分からん OR わからん

Twitter と同じようにQiita でも同じようなプレースホルダをリンクとしていくつかのところに設置しておいた.シンプルにタグのみを検索するようにした.

Qiita でもLaTeX について見ることが出来る.
qiita-search about LaTeX

TeX とLaTeX が混同されているので,TeX でもLaTeX とほぼ同等の内容を見ることが出来る.
qiita-search about TeX

LaTeX Engine

今よく利用されているであろう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 エンジンについては詳しくないが,上の表にあるようなエンジンがよく利用されているようだ.

twitter-search about LaTeX Engine

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

articlejarticle を指定しないように注意しておきたい.

twitter-search about LaTeX document class

jsclasses OR jsarticle OR jsreport OR bxjscls OR bxjsarticle OR bxjsreport OR bxjsbook OR jlreq lang:ja

jsbook については省略した.

Which Engine should be Used

日本語LaTeX ドキュメントにおいて,どのLaTeX エンジンを利用するべきかは各個人の主義思想に依存している.

特にこだわりのない場合には,利用シーンによって判断すると良いだろう.個人的な利用レベルでは以下のようなシーン別にエンジンを利用すると良いだろう.

LaTeX Engine Scene
upLaTeX
+
dvipdfmx
卒論などで一時的に利用する場合
LuaLaTeX 長い期間利用することが想定される場合

また,研究会などに寄稿する場合には特定の文書クラスが配布される場合があり,この文書クラスが(u)pLaTeX にしか対応していない場合がある.この場合にも(u)pLaTeX を利用することになるだろう.
したがって,日本語でLaTeX する限りには(u)pLaTeX を利用することから(ほとんど) 逃れられない可能性がある.

今後の展望として,pLaTeX (upLaTeX の前進) は使えなくなる可能性があるとされている.日本語を処理するLaTeX 開発がどのような展開を迎えるかは分からないが,いずれにしてもLuaLaTeX に移行していく(あるいは使える知識を付けておく) 必要はあると思われる.

1にupLaTeX ,2にLuaLaTeX を利用すると良いと思われる.

pLaTeX may Become UNUSABLE

upLaTeX とLuaLaTeX の利用について書いてきたが,pLaTeX は2021年6月現在,近い将来には使えなくなる可能性があるとされている.

pLaTeX が本格的にやばいかもという話 - Acetaminophen’s diary

詳細は上の記事を参照してほしいが,LaTeX カーネルが新しいものに変更されることに伴って,パッケージなども変更されるためにpLaTeX が追従できなくなるとされている.

pLaTeX の拡張であるupLaTeX も危うくなる可能性があるようだが,pLaTeX ほど緊急性が高いわけではないようだ.

About XeLaTeX for Japanese

現状,XeLaTeX で日本語文書をタイプセットすることは可能となってはいるが,他のLaTeX エンジンに比べて日本語処理が上手ではない. XeLaTeX で頑張ってまともにタイプセットしようとしている記事はいくつかあるが,問題が生じた場合の解決策は自力で見つけ出す必要が生じることが多いと思われる.

したがって,日本語LaTeX ドキュメントをXeLaTeX で処理するには以下の2点から避けた方が良いと思われる.

  • うまく日本語が処理できない
  • リファレンスが少ないので自力で解決する必要が生じる可能性がある

zxjaナンチャラの現状について語ってみる(1) - マクロツイーター

あまり積極的にXeLaTeX を利用して日本語LaTeX をする必要は無いと思われる. 開発する人が現れれば,XeLaTeX で日本語LaTeX が標準になる日も来るかもしれない.

Build Tool

少し本編.

上で紹介したLaTeX エンジンを実行しても相互参照の問題が解消しない場合がある.これは相互参照を利用している場合に数回のタイプセットを必要とするためである.

このような問題を解消するために相互参照の問題が解決するまで繰り返し実行するためのツールが存在する.以下の表で3つを紹介する.おそらくこれらが日本でもっとも利用されているタイプセットツールになる.

Build Tool Feature
latexmk 適切なLaTeX エンジンを自動選択してタイプセットする
ClutTeX 補助ファイルでディレクトリを散らかさない
llmk タイプセット方法を各LaTeX ドキュメント内で明示

Repository

よく記事にされているタイプセットツールはlatexmk だと思われる.

ClutTeX とllmk の開発者は日本人が中心となっている.(場合によってはIssue を日本語で挙げても怒られないとは思われる)
また,ご本人の記事もあるので参照してみると良いだろう.

ClutTeX

llmk

これらのどのツールを利用してタイプセットしても問題ないが,ドキュメントを共有したり大型のドキュメントを作成する場合にはいくつかの注意を払って選択すると良いだろう.

もちろんmake などの汎用ツールを利用しても問題ないが,TeX Live などのディストリビューションを導入するだけで実行できるようにしておく方が有用だと思われる.

twitter-search about Build Tool

#llmk OR latexmk OR cluttex OR llmk #llmk OR latexmk OR cluttex OR tex OR latex lang:ja

llmk のみを検索するとまったく関係ないツイートが参照されるので注意が必要.

Editor

基本的にテキストエディタであればどのツールでも問題なく編集することが出来る.極論,メモ帳で問題ない.

しかしながら,以下のようなエディタであればさまざまな支援を得ることが出来る.これはかなり強力な機能となっている.また,タイプセットもショートカットキーから実行することが出来る.

cf. TeX用エディタ - TeX Wiki

  • TeXworks qiita-search
  • TeXShop qiita-search
  • TeXstudio (TeXmaker の派生) qiita-search
  • LaTeX Workshop on VSCode qiita-search
  • YaTeX on Emacs qiita-search
  • Atom and extensions for LaTeX
  • LyX (WYSIWYG に対してWYSIWYM: What You See Is What You Mean を掲げている)
  • Vim

TeXworks はWindows 用のTeXLive に標準で搭載されており,初心者なら一番初めに触るエディタとなると思われる.基本的な機能が最低限あると言った感じ.

VSCode やAtom などのIDE (統合環境)にLaTeX 専用の拡張機能を利用する方法は,最近かなり利用者が増えているようだ.これらに関する記事も多数あり,初期設定もどうにかなるだろう.

twitter-search about Editor for 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

Useful Tool

やっと本編.さまざまなツールがある.

  • latexindent qiita-search
  • chktex qiita-search
  • lacheck
  • latexdiff qiita-search
  • latexpand

これらのツールはデフォルトでは日本語に対応していない.そのため,日本語に対応させる必要がある.

おおよそは公式ドキュメントに記載されているので,これを参照すれば良いだろう.あるいは,先人が記事にしてくれているのを参照すると良い.

twitter-search about LaTeX Tool

latexindent OR chktex OR lacheck OR latexdiff OR latexpand lang:ja

Formatter

インデントを設定することが出来る.

設定でかなり細かく指定できるので,そのまま利用せずに公式ドキュメントを参照して変更すると良いだろう.

latexindent の使い方 - Gist

Linter

LaTeX 構文でおかしな箇所を静的解析して指摘してくれる.

ChkTeX は開発が止まっている?

LaCheck を利用すると良いと思われる.

Diff

2つのファイルから差分を取ることが出来る.

latexdiff の拡張としてlatexdiff-vc があり,これであってもGit などとのバージョン管理ツールと連携して差分を取ることが出来る.

また,別のツールであるgit-latexdiff では,latexdiff-vc よりもより細かい制御が可能となっている.

Expand

\input\include などで分割しているファイルを統合してくれる.

Document Citation and Index

文献引用や索引作成にはBibTeX やmendex が必要になる.

twitter-search about BibTeX and mendex

bibtex OR pbibtex OR upbibtex OR mendex OR upmendex lang:ja

また,文献の管理と文献引用の作成補助ツールに関してもいくつかの種類がある.

twitter-search about Document Management Tool

zotero OR mendeley OR endnote OR paperpile OR refworks lang:ja

External LaTeX Compiler

ローカルにLaTeX 環境を構築せずともLaTeX を使う方法はいくつか存在する. 以下のような方法になる.

いずれの方法であってもさまざまな記事があるので,それらを参照してほしい. ただし,必要なパッケージなどが含まれていない可能性がある点だけは問題になることがある.

Cloud LaTeX やOverleaf では共同編集が可能であり,複数人で編集する場合には容易になる場合がある.

Docker については,初心者にとってコンテナを作成するには学習コストが高すぎる気もする.
また,いくつか公開されているコンテナでは軽量化を目指したために欲しいパッケージが足りない場合もある.オンラインLaTeX エディタを利用する方がまだ豊富にあるだろう.

しかし,Docker が使えればGitHub Actions でgit push すればタイプセットしてリリースするようにリポジトリを作成できるため,利用価値は非常に高くなる.個人で必要な分だけを導入したDocker コンテナを作成すると良いだろう.
おそらく,よく知られているDoker コンテナは以下だと思われる.

参考記事を紹介しておく.

日本語が扱える alpine の LaTeX イメージを作った話 - 3846masa's memo

また,pLaTeX が利用できなくなる可能性を考慮してDocker コンテナ化しておくのも重要になる可能性がある.

Docker を利用するにしても,Cloud LaTeX を利用するにしても,VSCode をエディタとすると簡単にLaTeX を編集することが出来るようになる.

twitter-search about External LaTeX Compiler

"cloud latex" OR overleaf OR "alpine texlive ja" OR latex "cloud latex" OR overleaf OR "alpine texlive ja" OR docker lang:ja

Official account

Issue and Question

LaTeX でタイプセットしていると途中で止まってしまうことがある.この場合,さまざまなコミュニティやSNS で質問することがあるが,これらの場で質問するときの必要事項を挙げておきたい.

  • OS
  • ディストリビューション (TeX Live20** など)
  • 実行コマンドライン (引数も必要な場合がある)
  • 警告を再現する最小コード
  • LOG ファイル

また,問題がLaTeX 文書クラスやパッケージにあるのか,組み方にあるのか,エディタにあるのかなどある程度,質問者が原因を特定できる. これらについては先んじて調べておく必要があると思われる.場合によってはタイプセットツールを変えてみるなども必要かもしれない.

単に問題を総投げしても解決できない場合が多分にある.

あまり気にしていない場合もあるが,LaTeX の文書クラスやパッケージ,エンジンも適宜更新されており,バージョンによって生じているエラーの場合もある.
質問する際にここまで挙げる必要はないかもしれないが,更新するとエラーが治ることや,更新によってエラーが生じることなどもある.どうしてもエラーの原因が特定できない場合にはこれを気にしても良いだろう.

twitter-search about TeX Distribution

texlive OR w32tex OR mactex OR miktex lang:ja

Other Tools

TeX で図形を描いたりスライドを作成するにはPGF(Portable Graphics Format) によって提供されるTikZ やBeamer などを利用する.

twitter-search about TikZ and Beamer

tikz OR beamer OR pgf latex OR tex lang:ja

HTML で数式LaTeX を利用する場合には以下のようなパーサが必要になるだろう.

twitter-search about MathJax and KaTeX

mathjax OR katex lang:ja

数式をMS PowerPoint やKeynote などで利用したい場合には以下のようなツールを利用すると画像化できて良いだろう.

twitter-search about TeX to Image tools

tex2img OR latexit OR "iguana tex" lang:ja

TeX2img やLaTeXiT は数式に限らず汎用的にLaTeX を画像化することが出来る.

あるいは,構築したTeX 環境のみでも以下のようなクラスやパッケージを利用することで余白のないPDF を作成することが出来る.

  • standalone クラス
  • preview パッケージ
  • pdfcrop (PDF の余白のトリミングツール)

twitter-search about "standalone class" and "preview package" and pdfcrop

standalone OR preview OR pdfcrop クラス OR パッケージ OR pdfcrop tex OR latex OR pdfcrop lang:ja

Digression

初めから,何に使えるどんなツールがあるのか一覧にしてドキュメントにしておいてほしい.

この他にもPDF を取り扱うツールもWindows 用のTeX Live にいくつか搭載されている.これらも見ておくとよりさまざまなことに利用できるようになるだろう.

ツールだけ書こうとしたらエンジンについても書いていた.また,エディタについても書いていた.びっくり.

my Recommend Editor

エディタについては個人の思想に依るところが大きいので,どのようなエディタを利用していても問題ないが,筆者がいま利用しているエディタはLaTeX Workshop on VSCode である.

過去に利用していたエディタはTeXworks だけだが,一時期TeXstudio を使おうとしてダウンロードだけしたこともある.

TeXworks は今思えば最小限度のTeX 用エディタだったなぁと感じている.TeXstudio やLaTeX Workshop on VSCode は設定が野暮に感じるかもしれない.なんなら挫折する可能性もある.
しかしながら,これらを利用しているとTeXworks には戻れないほど使い勝手が良い.

また,IDE の強みはLaTeX 以外の言語も取り扱うことが出来る点である.プログラミング言語でなくても,markdown はLaTeX と並行して利用すると良いだろう.
markdown 用のエディタ,LaTeX 用のエディタなど分けて導入するよりも,統合環境で利用した方が何かと楽になるのではないだろうか.(VSCode ではNotion のための拡張機能もあるようだ)

このことに付随して,YAML などの設定ファイルをいじる際にもIDE では自動的にシンタックスハイライトを与えてくれるので便利だと思われる.

Build or Typeset of Compile

LaTeX ドキュメントをPDF に変換する言い方はいくつかあるように感じる.以下のような3つである.

  • ビルド
  • タイプセット
  • コンパイル

どれを使っていてもTeX → PDF を意味している.

Twitter Search Expressions

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 かつAA かつCB かつABかつ C を検索しているため,A の検索はA のみで実行される.

Shields io

shields.ioを使って技術系アイコンを量産した - Qiita

Shields.io を利用してTwitter プレースホルダを作成している.

https://img.shields.io/badge/Search_on-Twitter-1DA1F2.svg?style=plastic&logo=twitter

良い感じのボタンを作成できるのですき.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment