Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/abenori/TeX2img

Converte TeX source to images.
https://github.com/abenori/TeX2img

Last synced: 2 months ago
JSON representation

Converte TeX source to images.

Awesome Lists containing this project

README

        

# TeX2img

(C) Yusuke Terada and Noriyuki Abe http://www.ms.u-tokyo.ac.jp/~abenori/

(For the English document, see [README.md](./README.md).)

## これは何?
入力した TeX ソースコードを TeX でコンパイルして,次のような形式の画像で出力するアプリケーションです.

* EPS ファイル(フォントをアウトライン化)
* PDF ファイル(フォントをアウトライン化またはテキストを保持)
* SVG(Z) ファイル(フォントをアウトライン化かつテキストも保持,要 MuPDF)
* JPEG ファイル
* TIFF ファイル
* PNG ファイル
* BMP ファイル
* EMF ファイル

出力した画像ファイルは Word / Excel / PowerPoint や,Illustrator / InDesign 等に貼り付けて利用することができます.

もともとの作者は寺田侑祐さんです.Version 1.2 以降開発を引き継ぎました.

## 動作条件
* Windows Vista 以降.
* .NET Framework 4.7.2 以降.
* 十分新しい TeX ディストリビューション(W32TeX か TeX Live を推奨)がインストールされていて,適切な LaTeX エンジンと dvi ドライバ,および pdftex が使えること.
* Ghostscript (Version 9以上を推奨) がインストールされ,使えること.(TeX Live 内のものでも利用可能です.)

## インストール
http://www.ms.u-tokyo.ac.jp/~abenori/soft/index.html#TEX2IMG からダウンロードしてください.
解凍後出てくる TeX2img.exe をダブルクリックすれば起動します.初回に platex.exe などの場所を推定しますが,推定に失敗した場合は,メニューの「ツール(T)」→「オプション... (O) Ctrl+E」から設定をしてください.
TeX2imgc.exe は CUI モードで動かすためのラッパです.TeX2img.exe と同じフォルダに置いてください.使い方は

> TeX2imgc.exe [Options] Input Output [Input Output...]

です.各種設定項目は TeX2img のそれを受け継ぎますが,変換後のプレビューのみ必ず行わないようになります.行いたい場合はオプション /preview を指定してください.

SVG ファイルの生成には MuPDF が必要です.[MuPDF](https://mupdf.com/index.html)からオリジナルを,または http://www.ms.u-tokyo.ac.jp/~abenori/soft/index.html#MUTOOL から改変版をダウンロードし,mutool.exe を TeX2img.exe と同じフォルダにおいてください.

## 制限
* 大きな EMF を作ると一部の塗りが現れない場合があります.これは今現在は仕様ということにさせてください.将来的に解決策が見つかれば対処します.

## Tips
* 文字コードの設定には「指定しない(入力 UTF-8 )」というものがあります.この「入力 UTF-8」とは,「TeX コードを直接入力」の欄に入力されたソースを UTF-8 で扱うことを意味します.デフォルトでは「指定しない(入力 Shift_JIS)」となっていますが,UTF-8 に対応した pLaTeX を使っている場合,「指定しない(入力 UTF-8)」が最もトラブルが少ないと思われますので,そちらを推奨します.

* Ghostscript の Version 9.14 あたりで,device が epswrite から eps2write に変更になったようです.画像生成時にエラーが出る場合は,「ツール」→「オプション」→「パスの設定」の「Ghostscript の device には epswrite を設定する」のチェックをつけて/外してみてください.

* LaTeX / DVI driver / Ghostscript のパスにオプションを混ぜて設定することで,画像変換時にオプションをつけたまま起動を行うことができます.ファイル名とオプションとの区切りは自動で認識されますが,確実にするためには実行ファイル名を""でくくってください.
例:"C:\w32tex\bin\platex.exe" --guess-input-enc

* 内部文字コードは Unicode です.従って,platex の設定として uplatex を用いることで,Shift_JIS にない文字なども直接出力をすることができます.ただし,設定→パスの設定の文字コードにおいて,「UTF-8」または「指定しない(入力 UTF-8 )」を選ぶ必要があります.

* 「LaTeX」で指定されたプログラムが pdf を生成したと判断した場合,TeX2img は dvipdfmx の実行をスキップします.これを利用して,pdflatex や lualatex などを指定することができます.なお,この場合は文字コードの設定を「指定しない(入力 UTF-8)」としておくとよいでしょう.

* 「DVI driver」で指定されたプログラムが ps を生成したと判断した場合,TeX2img は生成されたと判断した ps ファイルを Ghostscript により pdf ファイルへと変換し,処理を続行します.これを利用して,dvips を指定することができます.

* 生成された画像を TeX2img にドラッグアンドドロップ(またはメニューから「ファイル(F)」→「インポート(O)」)とすると生成した際のソースが復元されます.(ファイルシステムが NTFS または生成画像が PDF の時のみ.オプションで無効化可能.)

## 起動オプション
TeX2img.exe または TeX2imgc.exe が受けつけるオプションです.なお,
TeX2img.exe input output
とすると起動直後に変換が行われます.

/latex= LaTeX のパス
/dvidriver= DVI driver のパス
/gs= Ghostscript のパス
/oldgs[-] 9.14 以前の Ghostscript
/kanji= 文字コード(utf8/sjis/jis/euc/no)
/guess-compile[-] LaTeX ソースコンパイル回数を推定
/num= LaTeX ソースコンパイルの(最大)回数
/resolution= 解像度レベル
/left-margin= 左余白
/top-margin= 上余白
/right-margin= 右余白
/bottom-margin= 下余白
/margins= 余白(一括/左右 上下/左 上 右 下)
/unit= 余白の単位(bp/px)
/keep-page-size[-] ページサイズを維持
/merge-output-files[-] PDF / TIFF / SVG(Z) ファイルを単一ファイルに
/animation-delay= アニメーションのディレイ(秒)
/animation-loop= アニメーションのループ回数(0で無限)
/background-color= 背景色 指定例: FF0000 , red , "255 0 0"
/transparent[-] 透過
/with-text[-] PDF / SVG(Z) のテキスト情報を保持
/delete-display-size[-] SVG の表示寸法を削除
/antialias[-] アンチエイリアス処理
/low-resolution[-] 低解像度で処理
/ignore-errors[-] 少々のエラーは無視
/delete-tmpfiles[-] 一時ファイルを削除
/preview[-] 生成ファイルを開く
/embed-source[-] ソース情報を生成ファイルに保存
/copy-to-clipboard[-] 生成ファイルをクリップボードにコピー
/workingdir= 作業ディレクトリ(tmp/file/current)
/savesettings[-] 設定の保存を行う
/quiet[-] Quiet モード
/timeout= タイムアウト時間を設定(秒)
/batch= Batch モード(stop/nonstop)
/exit 設定の保存のみを行い終了する
/load-defaults 現在の設定をデフォルトに戻す
/help このメッセージを表示する
/version バージョン情報を表示する
/language= Language (system/ja/en)

[-] はオプションの否定を意味します.たとえば /guess-compile- と指定すると,コンパイル回数の推定を行わなくなります.複数回指定された場合は最後のものが優先されます.

各種オプションは後に指定されたものが優先されます.例えば

tex2imgc /transparent- /transparent a.tex a.png

とすると透過 png が作成されます.特に /load-defaults は全ての設定を既定に戻すので,それ以前のオプションがほぼ全て無効になります.このオプションは最初につけるとよいでしょう.

## 参考
* 元々の作者である寺田さんによる TeX2img 配布ページ
https://tex2img.tech/
には,TeX2img を活用するための情報があります.参考にしてみてください.

## 謝辞
* もともとの TeX2img は寺田侑祐さんによるものです.
* Azuki テキストエディタエンジンを利用しています.
http://sgry.b.sourceforge.jp/
* コマンドライン解析には NDesk.Options を利用しています.
http://www.ndesk.org/Options
* 日本語文字コードの推測には,Gauche に含まれている推測ルーチン(を C# に移植したもの)を利用しています.
http://practical-scheme.net/gauche/index-j.html
* 添付 pdfiumdraw には PDFium を利用しています.
https://pdfium.googlesource.com/pdfium/

## ライセンス
修正 BSD ライセンスです.詳しくは license.txt を参照してください.
なお,梱包しているライブラリなどのライセンスは以下の通りです.

* Azuki エディタコンポーネント Azuki.dll は zlib ライセンス.
* NDesk.Options は MIT ライセンス.
* Gauche は修正 BSD ライセンス.
* PDFium は修正 BSD ライセンス.
* pdfiumdraw は修正 BSD ライセンスとしています.
詳細は各々のページをご覧ください.

## 履歴(1.2以降)
* Version 1.2 (2014/9/15)
- 開発を引き継いだ.
- emf のサポートをやめた.
- 環境設定用の起動オプションを追加.
- ソースコードの色付け機能を搭載.(Azuki エディタコンポーネントを利用.)
- ファイル名に空白が入っている場合に動かないバグ修正.
- 複数ページにわたる TeX ソースを変換する場合,ページごとにファイルを出力するようにした.
- JPEG / PNG 時には,余白設定を従来の px に加え,「bp」でも指定できるようにした.(EPS / PDF の出力と同様の空白が得られるはず.)
- ライセンスを修正 BSD ライセンスへと変更

* 1.2.1 (2014/9/18)
- platex / dvipdfmx のパス設定にオプションが含まれていると実行できないバグ修正.

* 1.2.2 (2014/9/30)
- 文字コードを設定できるようにした.
- ソースコードのフォント及び色を変更できるようにした.またデフォルトの色も変更した.

* 1.2.3(2014/10/12)
- TeX ソースを直接入力 / 読み込むのボタンの切り替えと TeX ソース入力エリアの色が連動できていなかったのを修正.
- dvipdfmx のアウトプットが取得できていなかったのを修正.
- フォントサイズの表示が指定したのと一致していなかったのを修正.
- 存在しない TeX ソースファイルを読み込もうとすると,作業フォルダに一時ファイルが残ってしまっていたのを修正.
- Ghostscript に渡す Device を epswrite / eps2write と切り替えるオプションを設定.(Ghostscript Version 9.15 以降は eps2write でなければならない.初回起動時に推定する.)
- platex / dvipdfmx の実行時間がやたら長い場合には強制終了ができるようにした.(10秒ごとにユーザに問い合わせる.)

* 1.2.4(2014/10/14)
- プロセスのデッドロックが発生するかもしれなかったのを回避(しているつもり).
- 起動時に Azuki.dll が存在するかをチェックするようにした.
- eps2write 時には -dNoOutputFonts オプションを付加するようにした.これによりフォントがアウトライン化される(はず).
- バージョンアップ時に設定が消えてしまうのを修正.
- 低解像度で処理するオプションを追加(複雑な図形でエラーが発生する場合に利用するとよい).
- eps2write 時に余白を設定するとおかしくなるバグを修正.(epsをテキストファイルとして扱っていたことによるもの.)

* 1.2.5(2014/10/16)
- PDF のページ数を pdfinfo.exe によりあらかじめ取得し,ページごとに処理をするようにした.(eps2write 時に Ghostscript に %d を用いて複数ページを処理させると,ERROR -12 なるエラーが発生するので.)
- epswrite / eps2write の最初の推定を,9.15 以上で eps2write とした.(前のバージョンでは 9.14 以上.)
- その他細かい修正.

* 1.2.6(2014/10/22)
- Ghostscript のバージョンを自動推定する際に,設定されている Ghostscript のパスが間違っていると TeX2img 自体が起動しないバグを修正.

* 1.3.0(2014/11/21)
- オプションの解析を NDesk.Options にまかせることにした.
- CUI モードを担当する TeX2imgc.exe の追加.
- 設定情報の格納などに関する内部処理を変更.
- 必須環境を .NET Framework 3.5 以上とした.
- LaTeX ソースの複数回コンパイルが行えるようになった.(回数指定または推定.推定時の回数指定は最大回数を意味する.)
- 読み取り専用のファイルを読み込んで使用していた場合,一時ファイルの削除に失敗するバグを修正.

* 1.3.1(2014/12/14)
- CUI モードでも各種パスの推測を行うようにした.
- 設定画面に各種パスの推定を追加.
- オプションの仕様を /no-delete (true|false) から /no-delete[-] に変更,
- /platex- とすると引数を受けつけなくても起動してしまい,その後落ちてしまっていたのを修正.
- CUI モードでもコンパイル時間が長い時にメッセージボックスが表示されていたのを,コンソールへの出力に変更.
- 細かいバグ/ミスの修正.
- /batch オプションの追加.

* 1.3.2(2014/12/20)
- インポート / エクスポート機能を搭載.
- ドラッグ&ドロップを,TeX コードの編集エリア及び読み込むソースファイルの表示されているテキストボックスで受けつけるようにした.
- 必要に応じて,パス推定やプリアンブルの設定などを uplatex にあわせて行うようにした.
- /batch を引数必須のオプションとした.

* 1.4.0(2015/2/25)
- uplatex コンパイル時のアウトプットの文字化けを防ぐようにした.
- platex として指定されたプログラムが dvi ではなく pdf を生成したと判断された場合,dvipdfmx をスキップするようにした.
- ソース入力エリア / プリアンブル入力エリアの横スクロールバーを消した.
- 前回終了時の各ウィンドウのサイズが著しく小さい場合は,その値を無視することにした.
- プリアンブルのテンプレート機能を実装.
- 生成されたファイルの代替データストリームに TeX ソースを保存し,またインポートにより復元できるようにした.

* 1.5.0(2015/3/22)
- 変換のために mudraw 及び pdfiumdraw を同封.
- SVG / BMP ファイルを出力できるようにした.
- EMF ファイルの出力を復活させた.(pstoedit ではなく,pdfiumdraw 内の PDFium + GDI 描画による.)
- ページ数の取得も pdfiumdraw を用いて行うことにした.
- テキストをそのまま保持した PDF ファイルを出力できるようにした.(要 pdftex)
- 外部ソース読み込み時に,元ソースのあるフォルダ内のファイルを \input 等で読めるようにした.
- ImageMagick を不要とした.
- /imagemagick オプションを削除し,代わりにアンチエイリアス処理を行う /antialias オプションを追加.

* 1.5.1(2015/04/17)
- 内部コードを全て LF とした.(ソース入力エリアなどの改行コードの表示に影響する.)
- EMF で透過を有効にした.
- 色入力補助ダイアログの追加.
- デフォルトテンプレートに color パッケージを追加.
- 設定ダイアログでフォント色を変更した後キャンセルしても変更が有効になっていたバグ修正.
- コンパイル失敗時に一時ファイルが削除されなかったのを修正.

* 1.5.2(2015/05/10)
- 「画像ファイル生成」を押すとこのボタンが「中断」に変わり,押すことで現在実行中の処理を中断できるようにした.
- その代わり,10 秒ごとの中断処理の問い合わせを無くした.
- /timeout オプションを追加.
- プリアンブル設定ウィンドウの内部コードが LF になっていなかったのを修正.
- 出力先ファイルの参照ボタンのファイルの種類に svg / emf / bmp を追加(忘れていた).

* 1.5.3(2015/05/14)
- 一時フォルダが存在しなかった場合に作成するようにした.
- 一時ファイルが作成できなかった場合エラーを通知するようにした.
- 一時ファイル名の生成方法を変更した.

* 1.5.4(2015/07/22)
- ファイルインポート時に改行コードを変換するようにした.
- 特定のソース + epswrite 使用時に余白の処理がうまく行かない問題に対処.
- tex2imgc 実行時にカレントフォルダで作業をしてしまっていたのを修正.

* 1.5.5(2015/07/26)
- エディタの設定項目を増やした.
- 生成したファイルをクリップボードに転送できるようにした.

* 1.5.6(2015/08/13)
- 生成したファイルのコピーを CUI モードでも可能とした.
- 空のページが検出された場合,余白があれば余白のみをつけたページを出力し,そうでなければスキップすることにした.
- 空のページが検出された場合,警告を出すことにした.
- PDF 出力 + テキストを保持する + 余白の単位が px のときに,余白が px で扱われていたのを修正.
- eps から画像(jpg/bmp/png)を生成する際に一時的に作る eps ファイルのファイル名を他の一時ファイルの名前と同じ方法で生成することにした.
- 画像出力における余白の付き方を改善.
- /load-defaults オプションを追加.
- /no-delete → /delete-tmpfiles とし,意味を逆にした.
- /no- となっていたオプションから no- を外し,意味を逆にした.
- /help で現在の設定を表示するようにした.

* 1.6.0(2015/09/11)
- ps ファイルが作成された場合,Ghostscript を使って pdf への変換を試みるようにした.
- プリアンブルのテンプレートに %latex: や %dvidriver: から始まる行があれば,それに応じてパス推定を変更するようにした.
- dvips を使うテンプレートを追加.
- プリアンブル編集ウィンドウが画面外に出ないように調整することにした.
- パス名とオプション名の分割をある程度柔軟にするようにした.
- オプション名を /platex --> /latex , /dvipdfmx --> /dvidriver と変更.(古いものも残してある.)
- /timeout のデフォルトを 10 秒とした(tex2imgc のみ).更に 0 以下の値を受けつけないようにした.

* 1.6.1(2015/09/14)
- 気がついたら TIFF をサポートしていたらしい.
- 「ページサイズを維持する」オプションを追加.
- PDF / TIFF 出力で有効な「単一ファイルで出力」オプションを追加.
- Ghostscript による BoundingBox の取得を一回で済ませるようにした.
- PDFium を最新のものにした.

* 1.6.2(2015/10/06)
- SVG 変換の速度アップ.
- /margins オプションを追加.
- HiResBoundingBox を使うことにした.
- 開発環境を Visual Studio 2015 に.
- PDFium を最新のものにした.
- mudraw に独自拡張を施した.(PDF の注釈を操作するため.)
- PDF の注釈にソースを埋め込むことにした.
- AppleDouble Header file がある場合,Mac の TeX2img で埋め込まれたソースを探すことにした.

* 1.6.3(2015/10/08)
- /margins オプションに不正な値が入力されると落ちるバグを修正.

* 1.6.4(2015/10/22)
- 最初に引数でファイルが指定された時,一時ファイルではなくカレントフォルダで作業をしてしまっていたバグを修正.
- 注釈埋め込みされた PDF ファイルを extractbb にかけるとエラーが出ていたのに対して(とりあえずの)修正.

* 1.6.5(2015/10/29)
- 余白調整をした結果,BoundingBox を表す文字列が短くなると生成された画像がおかしくなったり生成されなかったりするバグを修正.

* 1.6.6(2015/11/02)
- ソース埋め込みがされないバグを修正.
- PDF に対してソース埋め込みが実行された場合,意図しない回転が起こる可能性があったのを修正.(上のバグのせいで 1.6.5 では現れない.)
- PDF を単一ファイルにまとめるために Ghostscript を使うことにした.(以前は pdftex.)

* 1.6.7(2015/11/08)
- /load-defaults すると /timeout が 0.01 秒に設定されてしまっていたバグを修正.
- PDF の Box の取得を,pdftex から MuPDF によるものに変更.さらに回転を考慮するようにした.
- PDF 結合を PDFium で行うようにした.
- MuPDF で注釈を追加したファイルにさらに Ghostscript をかけていたのをやめた.
- 作成される EMF を縦横 10 倍のものとした.
- 注釈追加時に,もととなるソースファイルの文字コードを推定するようにした.
- 文字コードが「指定しない(入力 Shift_JIS)」の時にアウトプット枠への出力が文字化けしていたのを修正.

* 1.6.8(2015/11/25)
- 作業フォルダを,従来の一時フォルダの他に,ファイルのあるフォルダとカレントフォルダを選べるようにした.
- 背景色を指定できるようにした.(透過が ON の場合は従来と同じ動作となる.)

* 1.7.0(2015/12/26)
- 背景色が白の場合に塗るのをサボっていたのを修正.
- BoundingBox の範囲内のみを塗ることにした.
- 変換経路を一新.PDF を中心とした変換を行うことにした.
- SVG アニメーションの作成ができるようになった.
- epswrite を使うかの設定を廃止し,9.14 以前の Ghostscript を使っているかに変更した.
- 併せて /gsdevice を /oldgs に変更.
- EMF 生成時に Ghostscript の .dashpath を施すことにした.
- eps2write 直前に pdfwrite を施してばらすことにした.
- pdfiumdraw にパターンが含まれる PDF ファイルを渡すと固まっていたのを修正.
- パターンを含むソースを SVG に変換するとパターンが消えることがあったのを修正.
- EMF の場合の背景色は pdfiumdraw が塗るようにした.
- 縦横 10 倍される EMF を生成していたのを元に戻した.
- (tex2imgc) 入力ファイルの拡張子が間違っていた場合のメッセージがおかしかったのを修正.

* 1.7.1(2016/02/05)
- SVGZ 形式に対応.
- 出力される PDF のバージョンが 1.7 と高いものになっていたのを修正.

* 1.7.2(2016/06/18)
- テンプレートの color パッケージを xcolor パッケージに変更.
- NDesk.Options → Mono.Options (NuGetから)
- PDFium をアップデート.
- PDF のバージョンを極力維持するようにした.

* 2.0.0(2016/07/15)
- 英語リソースを追加.
- オプション /language を追加.
- /platex および /dvipdfmx を隠しオプションとした.(オプション自身はまだ有効.)

* 2.0.1(2016/10/06)
- 日本語リソースのミスを修正.
- PDFium をアップデート.

* 2.0.2(2016/12/19)
- システムの言語によっては数値から文字列への変換がうまく行かなかったバグを修正.

* 2.0.3(2018/01/22)
- 要求する .NET Framework を 4.5.2 以上とした.
- PDFium をアップデート.

* 2.1.0 (2018/05/16)
- EMF 作成における Ghostscript の前処理を {strokepath fill} で行うようにした.(Ghostscript 9.20 以降以前の方式では動かなかったため.)
- アイコンを変更

* 2.1.1 (2020/05/01)
- 真っ白のものが描かれているページのサイズがうまく取得できなかったのを修正.
- 出力ファイル名入力ダイアログの脇に拡張子を選択できるドロップダウンリストを追加.
- Ghostscript への命令を少し変更.

* 2.1.2 (2020/08/11)
- 高 DPI でもレイアウトが崩れないようにした(つもり).
- 要求する .NET Framework のバージョンを 4.7.2 以上とした.

* 2.1.3 (2020/09/15)
- pdfTeX のパス指定を追加した.

* 2.2.0 (2020/10/04)
- mudrawなしでも動くようにした.
- ファイルの保存ダイアログなどでのデフォルト値を改善.
- バグ修正.

* 2.2.1(2020/10/15)
- LaTeX 2020-10-01でも推定が正しく動くようにした.