投稿中単一の .css ファイルで tex4ht の CSS をオーバーライドするにはどうすればよいですか?提案された解決策では、設定ファイル(つまりサンプル.cfg)。だから、もし私がサンプル.tex付け加えるとサンプル.cfg。
しかし、私の場合は、追加の設定ファイルを使用しています。マイメディア.cfgドキュメントにいくつかの追加機能を追加します。
これは (正しく理解していれば)、--config myMedia
このファイルをコンパイルに追加するために を使用する必要があることを意味します。
make4ht --utf8 --shell-escape sample.tex --config myMedia
さて、私は二設定ファイル:
- 必要なコマンドをすべて備えたマイメディア
- CSS設定を含む別のファイル(
\CssFile[] \EndCssFile
)
それで:
--config myMedia,sample
またはのようなものを追加する必要がありますか--config "myMedia,sample"
?まあ、それは機能しません...最初の構成ファイルのみが読み込まれます- 合併すべきかマイメディア.cfgそしてサンプル.cfg一緒に?見た目は醜いですが、実際には機能します
何か見落としているのでしょうか? コンパイラを変更したほうがよいでしょうか?
答え1
Darios の回答にいくつか追加情報を追加したいと思います。
では 1 つの設定ファイルのみを使用できますtex4ht
が、その内容をコマンドで組み込むことができる\input
ため、異なるプロジェクト間で設定の一部を再利用できます。特定のファイルをローカルの TEXMF ディレクトリに保存して、コンピューターの任意の場所からアクセスできるようにすることができます。
あなたの場合、カスタム パッケージを作成したので、 というパッケージの構成ファイルを作成する必要があります。回答でpackagename.4ht
パッケージの構成ファイルを提供しています。私はそれを少し変更します:myMedia.4ht
\NewConfigure{myMedia}{2}%
\renewcommand\myMedia[1]{\a:myMedia#1\b:myMedia}
%\Configure{myMedia}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src="}\NoFonts}{\HCode{" type="video/mp4"></video></div>}\EndNoFonts}
\Hinput{myMedia}
この\NewConfigure{myMedia}{2}
コマンドは、再定義されたコマンドに挿入して コマンドを使用して構成できる、いわゆるフックを作成します\Configure
。 これは、回答とまったく同じことを行います\NewConfigure
が、少し単純化されています。
\Configure
パッケージ構成ファイルにはコマンドを含めない方がよいでしょう。なぜでしょうか?tex4ht
ドキュメントのプリアンブルを処理するときに、コマンドを再定義してフックを挿入するために、使用されているすべてのパッケージの構成ファイルが読み込まれます。その後、現在の出力形式の構成ファイルが実行されます。は、HTML、ODT、およびその他の出力形式をサポートできます。したがって、HTML の構成はまたはファイルtex4ht
で提供され、ODT 形式は などで提供されます。もちろん、これらのファイルにカスタム構成を挿入することはできません。編集内容は次の更新で削除されるためです。html4.4ht
html5.4ht
ooffice.4ht
tex4ht
HTML のみをサポートすることが確実な場合は、最適な解決策ではないとしても、\Configure
コマンドを に残しておくことができます。別の可能性としては、ファイルにコマンドを入れること、最後の可能性としては、カスタム出力形式を作成することです。ここでは教育目的でこの可能性を示します。myMedia.4ht
.cfg
出力形式はファイルで定義されますtex4ht.4ht
。これは形式の定義ですhtml5
。たとえば、次のようになります。
\Configure{html5}{%
\:CheckOption{info}\if:Option
\Hinclude[*]{infoht4.4ht}\fi
\:CheckOption{info}\if:Option
\Hinclude[*]{infomml.4ht}\fi
\Hinclude[*]{html4.4ht}%
\Hinclude[*]{unicode.4ht}%
\:CheckOption{mathml}\if:Option%
\else\:CheckOption{mathml-}\fi%
\if:Option%
\Hinclude[*]{mathml.4ht}%
\Hinclude[*]{html-mml.4ht}%
\else
\Hinclude[*]{html4-math.4ht}%
\fi
\:CheckOption{svg}%
\if:Option \else\:CheckOption{svg-}\fi
\if:Option \else\:CheckOption{svg-obj}\fi
\if:Option \else\:CheckOption{svg-inline}\fi
\if:Option \Hinclude[*]{svg-option.4ht}%
\:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi
\fi
\Hinclude[*]{html5.4ht}%
}
ここでのコマンド\Configure
は、引数として使用されるマークが のオプションとして使用されたときに実行されるコードを宣言しますtex4ht
。html5
は によって自動的に追加されるmake4ht
ため、このコードはデフォルトで実行されます。
カスタム出力形式はtex4ht.usr
ファイル内で定義できます。ローカルの TEXMF ツリーに配置することも可能で、たとえば、それ~/texmf/tex/latex/tex4ht/tex4ht.usr
が機能するようです。内容は次のようになります。
\Configure{myhtml5}{%
\:CheckOption{info}\if:Option
\Hinclude[*]{infoht4.4ht}\fi
\:CheckOption{info}\if:Option
\Hinclude[*]{infomml.4ht}\fi
\Hinclude[*]{html4.4ht}%
\Hinclude[*]{unicode.4ht}%
\:CheckOption{mathml}\if:Option%
\else\:CheckOption{mathml-}\fi%
\if:Option%
\Hinclude[*]{mathml.4ht}%
\Hinclude[*]{html-mml.4ht}%
\else
\Hinclude[*]{html4-math.4ht}%
\fi
\:CheckOption{svg}%
\if:Option \else\:CheckOption{svg-}\fi
\if:Option \else\:CheckOption{svg-obj}\fi
\if:Option \else\:CheckOption{svg-inline}\fi
\if:Option \Hinclude[*]{svg-option.4ht}%
\:CheckOption{info}\if:Option \Hinclude[*]{infosvg.4ht}\fi
\fi
\Hinclude[*]{html5.4ht}%
\Hinclude[*]{myconfig.4ht}
}
前のリストとの違いは、マークに名前が付けられmyhtml5
、新しいファイルが要求されることですmyconfig.4ht
。この出力形式を要求するには、次のコマンドを実行します。
make4ht filename.tex "myhtml5"
その後、カスタム構成をファイルに追加してmyconfig.4ht
、次の場所に保存できますtex4ht.usr
。
\exit:ifnot{myMedia}
\ConfigureHinput{myMedia}
\Configure{myMedia}
{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src="}\NoFonts}
{\HCode{" type="video/mp4"></video></div>}\EndNoFonts}
\endinput\empty\empty\empty\empty\empty\empty
\endinput
私はパッケージのテンプレートを使用しましたtex4ht ドキュメント一般に、パッケージのコードは で囲む必要があります\ConfigureHinput{packagename} ... \endinput
。これにより、パッケージがドキュメントで使用された場合にのみ実行されるようになります。そうしないと、構成が不足していることや、ドキュメントに不要な HTML コードが含まれている可能性があるという警告が表示されます。使用されたパッケージは、\Hinput
パッケージ.4ht
ファイル内の コマンドを使用して処理のために登録されます。
myMedia
段落を正しく処理するために、の設定が少し変更されました。 この問題により、元の設定では無効な HTML コードが生成されました。 より簡単なソリューションを使用する場合は\Configure
、コマンドを ファイル.cfg
または にコピーできますmyMedia.4ht
。 これは、私の回答から判断すると、本当に必要な修正だけです。
私の回答で最後にお伝えしたい情報は、外部 CSS ファイルを組み込むために、より簡単なコマンドを使用できるということです。
\Preamble{xhtml}
\begin{document}
\Configure{AddCss}{samplestyle.css}
\EndPreamble
メインの CSS ファイルからのコードは含まれずsamplestyle.css
、HTML ヘッダーへのリンクのみが含まれます。ほとんどの場合、これが好ましい方法だと思います。
これはコマンドの結果です
make4ht -um draft -c sample.cfg sample.tex "myhtml5"
<hr class="figure" /><div class="figure"
>
<a id="x1-21"></a>
<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src="test.mp4" type="video/mp4"></video></div>
<br /> <div class="caption"
><span class="id">Figure 1: </span><span
class="content">test</span></div><!--tex4ht:label?: x1-21 -->
</div><hr class="endfigure" />
答え2
わかりました。@gusbrsがコメントで提案したことに従いました(本当にありがとう!)。彼の言う通りです。必要なしいずれのマイメディア.cfgそこにあったものは、マイメディア4ht。
このソリューションにより、グローバル設定ファイル(サンプル.cfg)を他のパッケージファイル(例えばマイメディア4ht)。
現在働くセットアップは次のとおりです。
サンプル.tex
\usepackage{myMedia}
ドキュメントのプリアンブルにコマンドが含まれています。\documentclass{article} \usepackage{graphicx} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} % may use latin1 instead of utf8 \usepackage[hidelinks]{hyperref} \usepackage{myMedia} \begin{document} \begin{figure} \centering \myMedia{test.mp4} \caption{test} \end{figure} \end{document}
- サンプル.cfg実際の設定ファイルのように動作します。
\Preamble{xhtml} \begin{document} \CssFile[samplestyle.css] \EndCssFile \EndPreamble
- マイメディア4ht
\NewConfigure{myMedia}[2]% { \def\a:myMedia{#1}% \def\b:myMedia{#2}% } \renewcommand\myMedia[1]{\a:myMedia#1\b:myMedia} \Configure{myMedia}{\HCode{<div class="video-content"><video width="640" height="480" playsinline autoplay muted loop><source src=}\NoFonts}{\HCode{ type="video/mp4"></video></div>}\EndNoFonts}
- マイメディア
\ProvidesPackage{myMedia} \newcommand\myMedia[1]{#1} \endinput
- サンプルスタイル.cssドキュメントの CSS スタイルが含まれます。
/* css.sty */ body { text-align: justify; }
コマンドラインは
make4ht --utf8 --shell-escape sample.tex --config sample
MWE が必要な方のために、ここにあります:マイサンプル