LaTeXML のやや不審な挙動について

LaTeXML のやや不審な挙動について

- でび まる の投稿
返信数: 3
でびまるといいます。
今時だともっと洗練された方法、ツールがあるのかも分りませんが TeX ベースの方法しか知らないので、ここの話題にはやや外れるかも分りませんが LaTeXML に関連し質問したいと思います。
TeX のファイルから LuaTeX(-ja) で PDF を作成しプレゼンなどに利用し LaTeXML で XHTML を作成しネットでの公開に利用するというスキームを使っています。
ところが図を \includegraphics で取り込んだときに拡張子を付けていても LaTeXML では別のファイルが取り込まれるという状況に遭遇しました。
はたしてこれは LaTeXML の仕様なのかそれともバグなのかなどご教示いただければと思います。
具体例としては xmltext.tex を以下の内容で作成し
\documentclass[12pt]{article}
\usepackage{graphicx}

\begin{document}
\includegraphics{foo.pdf}
\end{document}
foo.pdf (横線の右に A)と foo.eps (縦線の上に P)を同じディレクトリ(フォルダ)に置き(これらは添付した grfiles.tar.gz に含まれます)
* lualatex xmltest.tex
* latexml --dest=xmltest.xml xmltest.tex
* latexmlpost --dest=xmltest.xhtml xmltest.xml
して作成される xmltest.pdf と xmltest.xhtml を見比べると PDF には foo.pdf が取り込まれてますが XHTML には foo.eps が取り込まれます。
拡張子無しであれば兎も角、拡張子が付いてるのに想定外のファイルが取り込まれやや戸惑っています。

環境は Debian Linux で LuaTeX, LaTeXML のバージョンは
This is LuaHBTeX, Version 1.14.0
LaTeXML version 0.8.6
です。よろしくお願いします。
でび まる への返信

Re: LaTeXML のやや不審な挙動について

- 和田 勇 の投稿

latexmlpost のソースまで追ってはいないので、確証はないのですが https://dlmf.nist.gov/LaTeXML/manual/commands/latexmlpost.html や latexmlpost --help の最後の方に以下のようなオプションが書かれています。

    --graphicsmap=svg
    --graphicsmap=png
    --graphicsmap=gif
    --graphicsmap=jpg
    --graphicsmap=jpeg
    --graphicsmap=eps.png
    --graphicsmap=ps.png
    --graphicsmap=ai.png
    --graphicsmap=pdf.png

実験として、--graphicsmap=pdf.png あるいは --graphicsmap=pdf を指定すると想定された通りになるようです。

ちなみに x[数字].png (上記の前者オプション)とか x[数字].pdf (後者)が生成されます。 これを base64 でエンコードしたものを xhtml に書き込んでいるようです。

実験環境は以下の通り

    Debian 11
    This is LuaHBTeX, Version 1.12.0 ( texlive 2020 相当)
    latexml/stable,now 0.8.5-3

    --graphicsmap を付与しなければ でび まる  さんと同じ結果でした
和田 勇 への返信

Re: LaTeXML のやや不審な挙動について

- でび まる の投稿
返信ありがとうございます。オプションを試してみました。
xmltest.tex に追加して以下の様に

\includegraphics{foo.pdf}
\includegraphics{bar.eps}
\includegraphics{baz.jpg}

として bar.eps (右上りの斜線の上に X) と baz.jpg (右下りの斜線の下に Z)を同じディレクトリ(フォルダ)に置きます。これらは添付しています。ここで
latexmlpost --graphicsmap=pdf.png --graphicsmap=eps.png --dest=xmltest.xhtml xmltest.xml
にすると正しい出力になりますが
--graphicsmap=pdf.png だけだと EPS が取り込まれない、
--graphicsmap=eps.png --graphicsmap=pdf.png だと foo.pdf が foo.eps になるように思います。baz.jpg はオプションに依らないで取り込まれてる様です。

オプションの順番(と include の順番?)が関係するのが正しいとすると実用にはちょっと難しい気もしますが仕様なんでしょうね。もちろん foo.eps を削除すれば問題ありませんが古い文書用に残したい気持があったりします。
上の検証にも間違いがあったりするかも分りませんがご容赦ください。
でび まる への返信

Re: LaTeXML のやや不審な挙動について

- 和田 勇 の投稿

そうですね ... 複数の画像形式を指定されたらダメですね。

で、画像ファイルを形式別にディレクトリに整理したらどうかなと思っています。

    pdf/
    └── foo.pdf
    eps/
    ├── bar.eps
    └── foo.eps
    jpg/
    └── baz.jpg

includegraphics を修正する必要はありますが、latexmlpost には--graphicsmap オプションは不要になります。