我一直在尝试按照这里的教程进行操作:github.com/michal-h21/helpers4ht/wiki/tex4ht-tutorial
下面的我的 MWE 文件使用来自命令的文本生成有效的输出,但我希望根据所使用的命令分配类(即该文本的文档样式),类似于此方式(从 mk4ht oolatex 自定义 ODT 输出) 示例使用环境来更改与关联 word 文件中的样式名称相对应的类(在构建说明 odttemplate 中引用)。但是,我无法判断代码是否无法中断正文文本样式,或者是否由于代码中的错误而未分配样式。
主文本
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{testpkg}
\begin{document}
Test
Some text in English,
\SectionTitleTest{Test}
More text
\end{document}
测试包
\ProvidesPackage{testpkg}
\RequirePackage{xparse,expl3}
\DeclareDocumentCommand{\SectionTitleTest}{m}{#1}
\endinput
测试包配置文件
\Preamble{xhtml}
% to simplify things
\def\myendpar{\ifvmode\IgnorePar\fi\EndP}
\Configure{SectionTitleTest}{\HCode{<span class="SectionTitleTest">}\NoFonts}{\EndNoFonts\HCode{</span>}}% tried without NoFonts code to no avail either
\Css{.SectionTitleTest{font-style:SectionTitleTest;}}
\begin{document}
\EndPreamble
测试包.4ht
% provide configure for new command. we can choose any name
% but most convenient is to name hooks after redefined command
% we declare two hooks, to be inserted before and after the command
\NewConfigure{SectionTitleTest}{2}
% now we need to redefine \SectionTitleTest. save it to tmp command
% note that `:` can be part of command name in `.4ht` files.
\let\tmp:SectionTitleTest\SectionTitleTest
% now insert the hooks. they are named as \a:hook, \b:hook, ..., \h:hook
% depending on how many hooks were declared
\renewcommand\SectionTitleTest{\a:SectionTitleTest\tmp:SectionTitleTest\b:SectionTitleTest}
答案1
您的配置存在几个问题。首先,在testpkg.4ht
:
\renewcommand\SectionTitleTest{\a:SectionTitleTest\tmp:SectionTitleTest\b:SectionTitleTest}
原始版本\SectionTitleTest
接受一个参数,但您将其重新定义为无参数。因此,配置的所有内容都插入到您作为参数传递给的文本之前\SectionTitleTest
。正确的重新定义如下所示:
% provide configure for new command. we can choose any name
% but most convenient is to name hooks after redefined command
% we declare two hooks, to be inserted before and after the command
\NewConfigure{SectionTitleTest}{2}
% now we need to redefine \SectionTitleTest. save it to tmp command
% note that `:` can be part of command name in `.4ht` files.
\let\tmp:SectionTitleTest\SectionTitleTest
% now insert the hooks. they are named as \a:hook, \b:hook, ..., \h:hook
% depending on how many hooks were declared
\renewcommand\SectionTitleTest[1]{\a:SectionTitleTest\tmp:SectionTitleTest{#1}\b:SectionTitleTest}
第二个问题是您使用 HTML 标签。在 ODT 输出中,您必须使用开放文档标签。此外,ODT 不支持 CSS,而是使用特殊的 XML。
更新后的.cfg
文件:
\Preamble{xhtml}
% to simplify things
\def\myendpar{\ifvmode\IgnorePar\fi\EndP}
\Configure{SectionTitleTest}{\myendpar\HCode{<text:p text:style-name="section-title">}}{\HCode{</text:p>}}
\NewConfigureOO{section-title}
\ConfigureOO{section-title}{<style:style style:name="section-title" style:family="paragraph" style:class="text">
<style:text-properties style:text-underline-style="solid"
style:text-underline-width="auto"
style:text-underline-color="font-color"
/>
</style:style>}
\begin{document}
\EndPreamble
该<text:p>
元素用于段落,需要使用属性text:style-name
来选择段落样式。
段落样式使用 定义\NewConfigureOO
并使用 进行配置\ConfigureOO
。我使用了与 中相同的名称text:style-name
,但这不是必需的。<style:style style:name="section-title">
但必须使用正确的样式名称。
提供的样式配置部分标题以产生下划线文本。使用<style:text-properties>
属性根据您的需要更改格式。
这是 LO 中的结果: