当包含 2 个脚注的 LaTeX 文档(脚注 #1 是纯 ASCII,但脚注 #2 具有变音符号或其他扩展字符)转换为odt
(OpenDocument 格式)时,脚注 #1 中的数字小于脚注 #2 中的数字。
- 你得到相同的输出吗?
- 我怎样才能使数字大小相同?
例如:
\documentclass{article}
\begin{document}
First sentence.\footnote{First footnote.}
Second sentence.\footnote{S{\' e}cond footnote.}
\end{document}
这是的输出pdftex
:
这是输出$ mk4ht oolatex
TeX Live(2012)、mk4ht(v1.1)、OpenOffice.org(3.4.1)
答案1
我觉得这似乎是 openoffice 的一个 bug。如果你解压文件odt
并打开content.xml
它,你会看到:
...
<text:note text:note-class="footnote" text:id="fn1x0"><text:note-citation>1</text:note-citation><text:note-body> <text:p text:style-name="Footnote"><text:span text:style-name="ecrm-0800">First footnote.</text:span></text:p></text:note-body></text:note>
....
<text:note text:note-class="footnote" text:id="fn2x0"><text:note-citation>2</text:note-citation><text:note-body> <text:p text:style-name="Footnote"><text:span text:style-name="ecrm-0800">S</text:span><text:span text:style-name="ecrm-0800">é</text:span><text:span text:style-name="ecrm-0800">cond footnote.</text:span></text:p></text:note-body></text:note>
...
<text:span ...>
两个脚注之间的唯一区别是第二个脚注中有一些额外的元素。这是由tex4ht
处理重音字母的方式造成的。看来 openoffice 根据脚注文本中最大的元素来选择脚注标记大小,但在这种情况下,所有元素的大小都相同,因此脚注标记更大的原因应该不存在。
为了摆脱这些<text:span>
元素,我们必须重新定义 中的脚注处理oolatex
。创建虚拟包myfootnote.sty
并在序言中使用此包。此文件可以为空,其目的仅myfootnote.4ht
在于运行时调用文件tex4ht
。现在 的内容myfootnote.4ht
:
\:CheckOption{ooffice}\if:Option
\Configure{automatic-styles}
{\csname a:footnote-style\endcsname}
\NewConfigure{footnote-style}{1}
\Configure{footnote-style}{%
<style:style style:name="Footnote-text" style:family="text">
<style:text-properties fo:font-size="10.0pt" />
</style:style>
}
\AtBeginDocument{%
\Configure{footnotetext}
{\Tag{fn\FNnum x\minipageNum
-tx}{}%
\ifTag{fn\FNnum x\minipageNum
}
{\expandafter\ifx\csname (fn\FNnum x\minipageNum
)\endcsname\def
\:warning{Multiple footnote texts for mark \FNnum}%
\fi
} {}%
%
\SaveEndP \NoFonts \let\@textsuperscript\hbox
\HCode{<\text:footnote\Hnewline\text:note:class
text:id="}fn\FNnum x\minipageNum
%
\HCode{"><\text:footnote-citation>}%
\IgnorePar \special{t4ht@(}%
}
{\EndNoFonts \RecallEndP
\HCode{</\text:footnote-citation><\text:footnote-body>
<text:p\Hnewline text:style-name="Footnote"><text:span text:style-name="Footnote-text">}\NoFonts%
\SaveHtmlPar \Configure{HtmlPar}
{\EndP \HCode{<text:p text:style-name="Footnote"><text:span text:style-name="Footnote-text">}}
{\EndP \HCode{<text:p text:style-name="Footnote"><text:span text:style-name="Footnote-text">}}
{\HCode{</text:span></text:p>}}
{\HCode{</text:span></text:p>}}%
\ShowPar \special{t4ht@)}%
}
{\RecallHtmlPar \EndNoFonts\HCode{</text:span></text:p></\text:footnote-body></\text:footnote>}%
\expandafter\global\expandafter
\let\csname (fn\FNnum x\minipageNum
)\endcsname\def
%
}
}
\fi
我们\:CheckOption{ooffice}
确保仅当文档使用 运行时才包含此代码oolatex
,而不是使用htlatex
。然后我们创建 openoffice 样式Footnote-text
,它包含\Configure{automatic-styles}
在主文档中。然后是\Configure{footnotetext}
。我们必须将其包含在 中\AtBeginDocument
,否则它将被替换为默认值。内容是从文件 复制的ooffice.4ht
,我们只添加了一些标签和\NoFonts
宏\EndNoFonts
,这抑制了为带变音符号的字符创建<text:span>
元素。