0

いくつかの変更を加えたいラテックスパッケージをダウンロードしましたが、このパッケージには include.m4 ファイルが存在し、それが何をするのか、どのように生成されたのかわかりません。ここにその行があります:

m4_changequote([[, ]])m4_dnl
m4_dnl
m4_define([[m4_FILE_INIT]], [[m4_dnl
%
% This is automaticaly generated file, do not edit it.
%
]])m4_dnl
m4_dnl
m4_define([[m4_FILE_ID]], [[m4_dnl
m4_patsubst([[$1]], [[\$Date::? \([0-9]+\)-\([0-9]+\)-\([0-9]+\).*]], [[\1/\2/\3]])m4_dnl
 v[[]]m4_ESKDX_VERSION]])m4_dnl
m4_dnl
m4_define([[m4_FILE_DATE]], [[m4_dnl
m4_patsubst([[$1]], [[\$Date::? \([0-9]+\)-\([0-9]+\)-\([0-9]+\).*]], [[\1/\2/\3]])]])m4_dnl
m4_dnl

どのツールで生成されたか説明できますか?

なるほど。このファイルは自動生成されませんか? Aそして、Makefile からのこれらの行を理解するのを手伝ってくれませんか:

M4FLAGS = -P -Dm4_ESKDX_INIT="m4_include($(TOP_DIR)/include.m4)" \
  -Dm4_ESKDX_VERSION=$(VERSION) -Dm4_ESKDX_DATE=$(RELEASE_DATE)

そしてルール:

%.def: %.def.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@
%.sty: %.sty.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@
%.cls: %.cls.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@

私が見ることができるように、GNU m4 オプション '-D' は .sty .cls ファイルのマクロ m4_ESKDX_INIT を m4_include(../include.m4) に置き換え、オプション '-P' は最初にファイル include.m4 を展開し、さらにインクルード内のマクロを展開します。 m4。

4

1 に答える 1

1

これはGNU m4マクロ プロセッサ用のマクロです。このファイルは、-Pまたは--prefix-builtinsコマンドライン オプションで使用するように設計されています。m4_m4 がこのファイルを評価すると、その部分は削除されます。このファイル自体は何もしません。おそらく別のステップで使用される3 つのマクロ ( FILE_INITFILE_IDおよび) を定義するだけです。FILE_DATEこのファイルへの参照については、他のファイルを参照してください。基本的な考え方は、m4 を介して別のファイルを実行する前にこのファイルをロードすることであり、それが進むにつれてそれらのマクロを置き換えます。

自動生成に関するメッセージは、最終ファイルでコメントとして終了するはずです。Makefile の規則でわかるように、 、.def.styおよび.clsファイルのそれぞれは、同等の名前の.inファイルから生成されます (したがって、これらのファイルのマクロを評価し、それらを同等のものに置き換えることによって .result.clsから構築されresult.cls.inます。

したがって、これらのファイルを変更するには、ファイルを編集する必要があり.inます。

于 2015-01-07T16:18:03.767 に答える