多年来,我一直在 Windows XP 上使用 MikTeX 从 LaTeX 生成 PDF。不过,我不太喜欢 LaTeX,想改用 DocBook。在 Windows 上安装和运行像 Apache FOP 这样的 DocBook 处理器很麻烦,所以为了绕过这个问题,我想dblatex
暂时使用它。
问题是,虽然dblatex
有,但它并不像广告中说的那样有效。我有完成了 RTFM 的事情,但它没有帮助。例如,如果我使用命令dblatex --help
,我得到的是一堆看起来像 LaTeX 命令的东西作为 latex 调用的参数,并有一个提示,表明有东西试图读取一个名为的文件--help
,请求一个替代的文件名。
什么应该根据 dblatex 手册,我应该得到一屏的帮助。
如果我实际上提供了一个简单的 docbook 文件,我会收到错误消息,抱怨 DocBook 语法不是有效的 LaTeX 语法。嗯,不是 - 它是 DocBook。
起初,我以为 MikTeX 软件包(首次使用时会安装额外的软件包)一定出了问题,所以我完整安装了 MikTeX 2.8。没有变化。然后我想也许 MikTeX 2.8 有问题 - 所以我找出了 MikTeX 2.7 的旧 DVD 并从中完整安装了它。结果 - 一模一样。
使用 MikTeX 2.7,以下内容直接从我的命令提示符复制...
Q:\>dblatex --help
Q:\>latex \makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode
\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1
.a.b.c.{\g@addto@macro\@documentclasshook{\RequirePackage[#1,xhtml,docbook]{tex4
ht}}\let\HCode\documentstyle\def\documentstyle{\let\documentstyle\HCode\expandaf
ter\def\csname tex4ht\endcsname{#1,xhtml,docbook}\def\HCode####1{\documentstyle[
tex4ht,}\@ifnextchar[{\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode .a.b.c
.\input --help
This is pdfTeX, Version 3.141592-1.40.4 (MiKTeX 2.7)
entering extended mode
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman, ngerman, french, loaded.
! I can't find file `--help'.
<*> ...}}}\makeatother\HCode .a.b.c.\input --help
Please type another input file name:
需要说明的是,我输入的只是最上面那一行——那一dblatex --help
行。其余部分看起来就像运行了一个批处理文件。MikTeX 中有一个 dblatex.bat,其内容似乎解释了上述行为,但如果我明确运行该文件,那就没关系了dblatex.exe
——而且,该批处理文件似乎不在路径上。如果我将该批处理文件移动到其他地方,很快就会发现 dblatex.exe 正在寻找并运行该批处理文件——如果该文件不在那里,它会大声抱怨。
其他 MikTeX 内容(例如latex
和dvipdfm
全部)均可完美运行。例如...
Q:\>latex --help
Usage: latex [OPTION...] [COMMAND...]
-alias=APP Pretend to be APP. This affects both the
format used and the search path.
-aux-directory=DIR Use DIR as the directory to write auxiliary
files to.
-buf-size=N Set buf_size to N.
-c-style-errors Enable file:line:error style messages.
-disable-8bit-chars Make only 7-bit characters printable by.
顺便说一句,这只是输出的前几行。
那么 - 发生了什么事?也许 MikTeX 并不包含dblatex
- 只是一个巧合的同名程序?也许我在网上看到的那些提到在 MikTeX 中使用 dblatex 的帖子是假的,是为了惹恼我个人而设置的?
或者也许有一个不那么偏执的解释,比如也许 MikTeX 不喜欢我的 Windows XP 非常干净,上周才从头开始重新安装,目前的垃圾软件评级为零?或者它不喜欢成为我路径中的第一个项目,这样 MikTeX 程序就会自动优先于其他所有程序?
正如您所看到的,我正在努力寻找一个合理的解释——还有谁能提出更合理的解释吗?
答案1
从 Docbook 生成 PDF的dlatex
是这个:http://dblatex.sourceforge.net/
您正在使用的是dblatex
来自 MikTeX 的二进制文件,不幸的是,它恰好具有相同的名称,但它们的功能完全不同。
因此请安装并使用适当的dblatex
。