[[LaTeX入門]] / [[最初の例>LaTeX入門/最初の例]] / [[簡単な数式 (1)>LaTeX入門/簡単な数式(1)]] / [[簡単な数式 (2)>LaTeX入門/簡単な数式(2)]] / [[各種パッケージの利用>LaTeX入門/各種パッケージの利用]] / [[レポート>LaTeX入門/レポート]] / [[HTML と LaTeX の比較>LaTeX入門/HTMLとLaTeXの比較]] / [[複雑な数式>LaTeX入門/複雑な数式]] / [[図表>LaTeX入門/図表]] / [[図表の配置>LaTeX入門/図表の配置]] / [[相互参照とリンク>LaTeX入門/相互参照とリンク]] / [[文献引用]] / [[索引作成]] / [[LaTeX マクロの作成>LaTeX入門/LaTeXマクロの作成]] / [[スライドの作り方(jsarticle 編)>LaTeX入門/スライドの作り方(jsarticle編)]] / [[応用的な使い方>LaTeX入門/応用的な使い方]] / 発展編 ---- * 発展編:最近の LaTeX の動向 [#q6b5d096] LaTeX 入門では全体をとおして新しい TeX 環境ではもちろん,古い TeX 環境でも幅広く共通して使える pLaTeX で処理する手順を説明しましたが,新しい TeX 環境ではより機能拡張が施された LaTeX エンジンを使えるようになりました。 // LaTeX 入門は全体をとおして,当面の間は pLaTeX で固定し,ほかの説明は省く。 // 各所で雑多な情報が出回っているので,ここで位置づけをはっきりさせておこうというのが趣旨です。 // 発展編なので“超初心者”は読まない前提,ただし知りたい人にはここを参照するように導く。 // あまり TeX Wiki のなかに説明がないので… -- アセトアミノフェン (2015-08-31) #contents ** upLaTeX [#deabb3ce] 最近の TeX をインストールした場合は((正確には W32TeX [2007/08/04] 以降,あるいは TeX Live 2012 以降です。)),[[upLaTeX>upTeX,upLaTeX]] という Unicode 対応の日本語用 LaTeX エンジンが収録されています。 upLaTeX の主なメリットは以下のとおりです: -環境依存文字(丸数字や特殊記号など)をそのままソースに使える -漢字が JIS 第一・第二水準に入っているか否かを意識せずに済む LaTeX 入門で pLaTeX のソースを示してきましたが,pLaTeX から upLaTeX に切り替える場合に変更するのは以下の点です: -ソースを作成するとき,文字コードは UTF-8 に指定する(ほかの文字コードは不可) -\documentclass{jsarticle} の代わりに \documentclass[uplatex]{jsarticle} を使用 *** upLaTeX ソース例 [#z9f16bc7] LaTeX 入門で示した例は特に upLaTeX でないと処理できないソースを含んでいませんでした。 しかし,例えば以下のような JIS 外の漢字や丸数字などを含むソースを考えましょう。 \documentclass[uplatex]{jsarticle} \begin{document} ①②③④㋐㋑㋒㋓ 森鷗外,内田百閒,鄧小平,李承燁 \end{document} これを ex1.tex という名前で文字コードを UTF-8 にして保存し,以下のコマンドを実行します。 uplatex ex1 dvipdfmx ex1 すると,ex1.pdf が出力されます。 [[ptex2pdf]] を使う場合は ptex2pdf -u -l ex1 とすれば,upLaTeX と dvipdfmx が順に実行されて ex1.pdf が得られます。 もし仮に \documentclass{jsarticle} として pLaTeX で処理してしまうと,丸記号や JIS 外の漢字が抜け落ちてしまいます。 pLaTeX の場合は,使いたい文字が扱えるかどうかいちいち考える必要がありますが,upLaTeX ではその必要がありません。 補足として: -[[図表>LaTeX入門/図表]]の取り扱い等については upLaTeX + dvipdfmx でも pLaTeX の場合と同様です。 -[[文献引用]]については,pBibTeX の代わりに upLaTeX と同様に Unicode に対応した upBibTeX を使うとよいでしょう。 -[[索引作成]]については,mendex を実行する際に mendex -U hoge のように UTF-8 モードを指定すれば,JIS 外の漢字も正しく索引に入れることができます(参考:[[forum:1253]])。 なお,W32TeX [2015/01/27] 以降に限り Unicode に対応した upmendex が入っていますので, upmendex hoge とするとより幅広い Unicode 文字を扱えます。 mendex -U とほぼ似た動きをしますが,mendex は読みデータが EUC であるのに対し,upmendex は読みデータは Unicode になっています。 ソーティングは ICU を利用しているので,ソート順が異なることがあります(参考:[[forum:1308]],[[forum:1637]])。 *** upLaTeX を使える場合・使えない場合 [#p69fabd3] upLaTeX を使うための大前提として,お使いの OS が Unicode (UTF-8) に対応している必要があります。 そのうえで,TeX 環境に upLaTeX が入っているかどうかの目安は以下のとおりです: -TeX をお使いのコンピュータにインストールしてある場合 --W32TeX [2007/08/04] 以降,あるいは TeX Live 2012 以降であれば upLaTeX が入っています。 --これより古い環境(TeX Live 2011 など)では使えません。 -クラウドで TeX を利用している場合 --Cloud LaTeX には TeX Live 2013 の pLaTeX が入っていますが,upLaTeX は入っていません(2015-08-31 現在)。 なお,主要な論文誌のスタイルファイルの中には,upLaTeX に未対応のものもあります。 たとえば,[[IPSJ]] のような日本語ジャーナルのクラスファイルは未だ pLaTeX ベースです。 ** LuaLaTeX [#mb665da8] 日本では pLaTeX や upLaTeX と dvipdfmx を組み合わせて「LaTeX ソースから DVI 経由で PDF を作る」ケースが圧倒的に多いのが現状です。 しかし海外に目を向けてみると,[[pdfLaTeX>pdfTeX]] を使って「LaTeX ソースから PDF を直接出力する」ケースが主流です。 この pdfTeX を拡張して Lua という軽量スクリプト言語を利用できるようにしたのが [[LuaTeX]] です。 LuaTeX は,いまのところ pdfTeX の後継として位置づけられています。 2015 年現在 LuaTeX のバージョンは beta-0.80.0 で,まだ正式リリースには至っていませんが,すでに pdfTeX に近い機能拡張を利用できるほか,以下のような優れた機能もあります: -Unicode に対応 -フォントの設定が簡単(OpenType/TrueType フォントを直接扱える) LuaLaTeX を使って日本語を組版するための [[LuaTeX-ja]] というパッケージも活発に開発されています。 LaTeX 入門で示した pLaTeX のソースから LuaLaTeX (LuaTeX-ja) に切り替える場合,現在は以下のようにすればよいようです: -ソースを作成するとき,文字コードは UTF-8 に指定する(ほかの文字コードは不可) -\documentclass{jsarticle} の代わりに \documentclass{ltjsarticle} を使用 このように ltjsarticle クラスにすれば自動的に luatexja パッケージが読み込まれます。 *** LuaTeX-ja ソース例 [#t7eebe4c] [[LuaTeX-ja の使い方:https://osdn.jp/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9]]に例が挙げられています。 \documentclass{ltjsarticle} \begin{document} \section{はじめてのLua\TeX-ja} ちゃんと日本語が出るかな? \subsection{出たかな?} 長い文章を入力するとちゃんと右端のところで折り返されるかな? 大丈夫そうな気がするけど.ちょっと不安だけど何事も挑戦だよね. \end{document} これを ex2.tex という名前で文字コードを UTF-8 にして保存し,以下のコマンドを実行します。 lualatex ex2 すると,ex2.pdf が出力されます(初回のタイプセットではキャッシュが存在しないので,長い場合は数分程度かかるかもしれません)。 このとき,デフォルトでは標準和文フォントは IPAex フォントが埋め込まれます。 OS X でヒラギノフォントを利用できる場合は \usepackage[hiragino-pron]{luatexja-preset} をプリアンブルに追加すれば,システムにインストールされているヒラギノフォントが認識されて埋め込まれるようになります。 このように,LuaTeX の大きな特徴は「システムにインストールされた OpenType フォントや TrueType フォントを直接扱える」ことだったりします。 なお,[[図表>LaTeX入門/図表]]の取り扱い等については,pLaTeX のときのような [dvipdfmx] オプションが不要になります(これは pdfLaTeX と同様で,自動的に適切なドライバを検出します)。 まだ Lua(La)TeX,LuaTeX-ja ともにベータ版で仕様は流動的であることを気に留めておいてください。 ** ほかの文書クラスの利用 [#n7262472] 少し昔の TeX 環境では,日本語用の文書クラスとして jclasses (jarticle, jreport, jbook) しかインストールされていませんでした。 これらは JIS の組版規則に合わない点が複数指摘されており,工夫が必要でした。 いまではほとんどの環境で奥村先生による「[[pLaTeX2e 新ドキュメントクラス>jsclasses]]」 (jsarticle, jsbook) がインストールされていますので,JIS の組版規則に則った日本語文書を容易に作成できるようになっています。 LaTeX 入門ではこの新ドキュメントクラスを使用して,簡単な例を示してきました。 その一方で,新ドキュメントクラスは pLaTeX というエンジンの機能に強く依存して日本語の組版を実現しているため,pLaTeX / upLaTeX 以外のエンジンで使用することができません。 そこで,新ドキュメントクラスから pLaTeX 依存の部分を分離した [[BXjscls]] という新しい汎用文書クラスが,ZR さんによってつくられました。 BXjscls は使用する各エンジンに対応した日本語処理パッケージを読み込み,(u)pLaTeX 以外でも [[LuaLaTeX>LuaTeX]] / [[XeLaTeX>XeTeX]] / [[pdfLaTeX>pdfTeX]] で新ドキュメントクラスを用いた場合と同等の文書作成が可能となります。 *** BXjscls の使用例 [#x7e2c140] 以下では,2015 年 8 月に公開された v1.x を前提に簡単に紹介します。 pLaTeX で bxjsarticle クラスを使用する例は以下のようになります。 \documentclass[platex,dvipdfmx,ja=standard]{bxjsarticle} \title{{p\LaTeX}で日本語文書} \author{七篠 権兵衛} \begin{document} \maketitle 日本で漱石が「吾輩は猫である」を発表したころ, ドイツではAlbert Einsteinが特殊相対論を発表した。 \end{document} 一行目の文書クラスのオプションでは,エンジン名(必須)とドライバ名(DVI を経由する場合は必須),日本語処理の標準設定(必須)を指定します。 これを upLaTeX 用に書き変えるには,pLaTeX 用ソースの一行目と二行目を \documentclass[uplatex,dvipdfmx,ja=standard]{bxjsarticle} \title{{up\LaTeX}で日本語文書} …(残りは同じ)… とします。LuaLaTeX 用に書き変えるには,同様に pLaTeX 用ソースの一行目と二行目を \documentclass[lualatex,ja=standard]{bxjsarticle} \title{{Lua\LaTeX}で日本語文書} …(残りは同じ)… とします(DVI を経由しないことに注意)。 XeLaTeX と pdfLaTeX では少々ソースを書く際に注意が必要になります。 上の pLaTeX 用ソースに即した最低限の注意事項としては - XeLaTeX / pdfLaTeX で「七篠 権兵衛」のように和文文字の間に欧文空白を入れたい場合は,空白文字の前に \ が必要です。 - pdfLaTeX の場合は和欧文間空白(四分空き)は自動的には挿入されません。代わりに,“~” が和欧文間空白を入れる命令となっています(これは pdfLaTeX の標準と異なるので注意)ので,手動で適宜これを入れる必要があります。 が挙げられますので,XeLaTeX 用の場合は \documentclass[xelatex,ja=standard]{bxjsarticle} \usepackage{metalogo} % \XeLaTeX ロゴのため \title{{\XeLaTeX}で日本語文書} \author{七篠\ 権兵衛} …(残りは同じ)… となり,pdfLaTeX 用の場合は \documentclass[pdflatex,ja=standard]{bxjsarticle} \title{{pdf\LaTeX}~で日本語文書} \author{七篠\ 権兵衛} \begin{document} \maketitle 日本で漱石が「吾輩は猫である」を発表したころ, ドイツでは~Albert Einstein~が特殊相対論を発表した。 \end{document} となります。 ほかにも注意点がいくつか挙げられますが,詳細は [[BXjscls]] を参照してください。