从 mk4ht oolatex 在 ODT 输出中创建新的单行类

从 mk4ht oolatex 在 ODT 输出中创建新的单行类

我一直在尝试按照这里的教程进行操作: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 中的结果:

在此处输入图片描述

相关内容