继我最近的问题之后从 mk4ht oolatex 自定义 ODT 输出以及此处描述的改进的工艺替代方案: 使用 make4ht 的 ODT 模板(使用存储在 odt 文档/模板中的现有/创建的样式进行直接格式化)我想问一下在 tex/编译方面需要使用 make4ht 做些什么才能将 odt 模板中的样式连接到 latex 文件中的自定义命令或环境。
例如:
test
我在一个名为 的 odt 文件中创建了一个名为 的样式basic.odt
。
我编译了一个 tex 文件(有关 MWE 请参阅下文),"C:\texmfs\install\miktex\bin\make4ht.exe" -f odt+odttemplate "test.tex" "odttemplate=./refTemplates/basic.odt"
该文件使用 make4ht 编译我的 tex 文件,并带有指向模板 odt 文件的指针。
梅威瑟:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\definecolor{specialtextcolor}{rgb}{0,0,1}
\newenvironment{test}
{\par\begin{color}{specialtextcolor}}
{\end{color}}
\begin{document}
This is a normal paragraph.
\section{Custom style access test}
test text in the first level of section hierarchy
more text
\medskip
\begin{test}
This is a test environment.
\end{test}
\medskip
more text
\end{document}
主要担心的是输出文件没有反映出他们使用了该test
样式。
首先要澄清的一点是:
make4ht 需要什么才能让 lua 脚本接管并从模板 odt 文件中的样式中提取所需的 css 格式?我希望使用这些 odt 模板文件,并摆脱 cfg 文件中的配置命令,我从未成功修改过这些命令以适用于其他样式(请参阅引用示例从 mk4ht oolatex 自定义 ODT 输出...我甚至无法将 tex 和 cfg 文件中的所有实例重命名为
quote
没有cmdquote
编译错误)。由于某些样式(如部分)无需手动创建或自定义任何界面配置即可访问,因此我假设
a) 不需要自定义 cfg 文件,而且我的测试命令/环境非常简约,或者 b) 这些已经预先配置好了(比如在类或 sty 文件中)?如果是后者,那么这些记录或存储在哪里,以便我可以从这些预先存在的示例中学习?
答案1
您仍必须配置test
环境才能使用该test
样式。更困难的是,如果您想使用段落样式,则必须为环境配置段落处理。尝试以下配置:
\Preamble{xhtml}
% to simplify the things
\def\myendpar{\ifvmode\IgnorePar\fi\EndP}
% configure the environment
\ConfigureEnv{test}
{\myendpar\bgroup%
% when you want to modify the paragraph style, you must redefine the paragraph configuration to
% use the test style name
\Configure{HtmlPar}%
{\EndP \HCode{<text:p text:style-name="test">}}%
{\EndP \HCode{<text:p text:style-name="test">}}%
{\HCode{</text:p>}}{\HCode{</text:p>}}%
\par\ShowPar}
{\myendpar\egroup}{}{}
\begin{document}
\EndPreamble
如您所见,您必须配置HtmlPar
配置才能插入<text:p text:style-name="desired style name">
。它不能自动插入。通常,您会test
使用\NewConfigureOO
和\ConfigureOO
命令为样式插入样式,但由于您在模板文件中配置它,因此在这种情况下您不需要它,我不会展示这一点。可以找到有关 ODT 输出的常用样式的一些信息这里。
不幸的是,所使用的默认样式没有记录,您只能在文献资料中tex4ht
搜索\ConfigureOO
ODT 输出。
我还更新了odttemplate
扩展,以实际加入来自模板和生成的文件的样式,因为tex4ht
如果您仅使用 LibreOffice 创建的基本 ODT 文件,您将丢失添加的额外样式。
这是具有声明样式的空 ODT 文件的结果test
: