将 LaTeX 转换为 OpenOffice.org 时脚注大小不一致

将 LaTeX 转换为 OpenOffice.org 时脚注大小不一致

当包含 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">&#xE9;</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>元素。

相关内容