Skip to content

Instantly share code, notes, and snippets.

@aminophen
Last active August 29, 2015 14:15
Show Gist options
  • Save aminophen/1a06336c7c5a29b25237 to your computer and use it in GitHub Desktop.
Save aminophen/1a06336c7c5a29b25237 to your computer and use it in GitHub Desktop.
TeX2img の PDF 直接出力エンジンサポート案
<基本概念>
設定項目が多いので、決定の優先順位として
「(最上位)コンパイル方法 > プログラムのパス > 文字コードと文書クラス(最下位)」
の順に参照する。
<設定項目 UI 一覧>
新機能にかかわる TeX から PDF を生成する過程にかかわる設定項目 UI のみ表示。
【コンパイル方法】
- TeX -> DVI -> PDF
- TeX -> PDF
【プログラムのパス】
- LaTeX
- dvipdfmx
【文字コード】
- 指定しない(Win は2通り、Mac は1通り)
- UTF-8
- ShiftJIS
- EUC
- JIS
<前提:サポート対象>
【既知として明確にサポートするエンジン】
- platex + dvipdfmx(※MiKTeX の platex ではなく、アスキーの pTeX)
- uplatex + dvipdfmx
- pdflatex
- xelatex
- lualatex
【記憶すべき文書クラス】
- jsarticle
- jsarticle(uplatex 付)
- article
【記憶すべきコンパイルオプション】(固定の -interaction=nonstopmode 以外)
- 何もなし
- -kanji=エンコーディング(Win 版はさらに -no-guess-input-enc も付加)
<ユーザの使い方>
(1) ユーザが【コンパイル方法】を指定する。
(2) 「推奨設定」ボタンを押す。
すると【コンパイル方法】の指定に依存して全体が切り替わる。
補足1:(2)の前に【パス】を手動で書き換えてもよい。
すると【コンパイル方法】および【パス】の指定に依存して全体が切り替わる。
補足2:もちろん、(2)を行わずに全体を手動で書き換えてもよい。
<推奨設定ボタンの仕様>
【コンパイル方法】の指定に応じて、設定を以下のように自動設定する。
以下の図式で、枝分かれが少ないほう(まっすぐな方)がデフォルトで、枝分かれも許容とする。たとえば
- TeX->DVI->PDF の状態では platex と uplatex を許容するが、他が入っていれば自動で platex に書き換え
- TeX->PDF の状態では pdflatex と xelatex と lualatex を許容するが、他が入っていれば自動で pdflatex に書き換え
【コンパイル方法】→【プログラムのパス】→【文字コード+文書クラス】
┬ TeX->DVI->PDF ─┬→ platex →(ユーザ指定のまま)+ jsarticle
│ └→ uplatex →(※1)+ jsarticle(uplatex オプション付)
└ TeX->PDF    ─┬→ pdflatex →(※2)+ article
├→ xelatex →(※3)+ article
└→ lualatex →(※3)+ article
※1:Mac なら「指定しない」または「UTF8」、Win なら「指定しない (UTF-8)」または「UTF-8」を許容
※2:Mac なら(ユーザ指定のまま)、Win なら(ユーザ指定のまま)を許容
※3:Mac なら「指定しない」または「UTF8」、Win なら「指定しない (UTF-8)」または「UTF-8」を許容
なお、article は bxjsarticle をデフォルトに採用してもよいのかもしれない。
<コンパイル時およびエクスポート時のファイル生成の文字コード>
(案1)実装が単純だが、状態によっては UTF8 用ソースが他のコードになる
[文字コードの選択状態を参照]
├→ 指定しない系 → OS 標準コード(Win は括弧内、Mac は?)
└→ UTF8/SJIS/EUC/JIS → 選択状態に従う
(案2)一手間多いが、親切かも(ただ、勝手にパスだけで固定していいかどうか疑問)
[パスを参照]
├→ uplatex/xelatex/lualatex → UTF8 で出力
└→ それ以外 →[文字コードの選択状態を参照]
├→ 指定しない系 → OS 標準コード(Win は括弧内、Mac は?)
└→ UTF8/SJIS/EUC/JIS → 選択状態に従う
<コンパイル時のエンジンオプション(固定の -interaction=nonstopmode 以外)の与え方>
以下の順に決定する。これなら UI の見た目と (u)platex に渡されるオプションが一致する。
(DVI 経由だからといって -kanji= を付加するのは危険。さすがに -kanji= は (u)platex 以外に存在しないだろう)
[パスを参照]
├→ (u)platex →[文字コードの選択状態を参照]
│ ├→ 指定しない系 → 何も追加しない(★1)
│ └→ UTF8/SJIS/EUC/JIS → -kanji=エンコーディング(Win はさらに -no-guess-input-enc も付加)
└→ それ以外 → 何も追加しない(★2)
★1:MiKTeX の platex はここで対応
★2:欧文 latex などはここで対応
<プリアンブルをデフォルトに戻すボタンの挙動>
[パスを参照]
├→ platex → jsarticle
├→ uplatex → jsarticle(uplatex オプション付)
└→ それ以外 → article
なお、article は bxjsarticle をデフォルトに採用してもよいのかもしれない。
@aminophen
Copy link
Author

なるべく現行版からの変更が少ないように、かつ未知のエンジンにも(ユーザが手動で適切に指定する必要があるとはいえ)適応可能なように考えたつもりです。

@aminophen
Copy link
Author

より良い案が次々と生まれつつあるので、この案は廃案とします。

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