Pandoc 的 ODT 模板中的彩色水平线

Posted

技术标签:

【中文标题】Pandoc 的 ODT 模板中的彩色水平线【英文标题】:Colored horizontal lines in ODT template for Pandoc 【发布时间】:2014-03-31 17:11:20 【问题描述】:

我正在尝试在使用pandocmd(Markdown 文本)文件转换获得的 ODT 文件(LibreOffice/OpenOffice 的 OpenDocumentText)的开头绘制一条彩色水平线。

首先我得到默认模板:

pandoc -D odt > template_odt.xml

我可以通过输入<text:p text:style-name="Horizontal_20_Line" /> 来绘制一条黑色水平线,例如在template_odt.xml 中的这个位置:

...
$endif$
<text:p text:style-name="Horizontal_20_Line" />
$for(include-before)$
...

但是如何为这条线赋予颜色呢? Horizontal_20_line 的样式在styles.xml 文件中定义:

<style:style style:name="Horizontal_20_Line"
style:display-name="Horizontal Line" style:family="paragraph"
style:parent-style-name="Standard"
style:next-style-name="Text_20_body" style:class="html">
  <style:paragraph-properties fo:margin-top="0in"
  fo:margin-bottom="0.1965in" style:contextual-spacing="false"
  style:border-line-width-bottom="0.0008in 0.0138in 0.0008in"
  fo:padding="0in" fo:border-left="none" fo:border-right="none"
  fo:border-top="none" fo:border-bottom="1.11pt double #808080"
  text:number-lines="false" text:line-number="0"
  style:join-border="false" />
  <style:text-properties fo:font-size="6pt"
  style:font-size-asian="6pt" style:font-size-complex="6pt" />
</style:style>

所以:

    我可以在template_odt.xml 中添加一个属性直接,比如:

    <text:p text:style-name="Horizontal_20_Line" line-color="red"?????/>
    

    或者我应该修改Horizontal_20_line的样式,如何修改?我不知道默认的styles.xml 文件在哪里,也不知道如何在template_odt.xml 中定义样式(我所有的天真尝试都失败了)。

【问题讨论】:

【参考方案1】:

我找到了如何修改styles.xml 文件。首先在 pandoc 文件夹或github 上获取reference.odt 文件。然后,解压缩此文件。横线颜色默认为#808080

<style:style style:name="Horizontal_20_Line"
style:display-name="Horizontal Line" style:family="paragraph"
style:parent-style-name="Standard"
style:next-style-name="Text_20_body" style:class="html">
  <style:paragraph-properties fo:margin-top="0in"
  fo:margin-bottom="0.1965in" style:contextual-spacing="false"
  style:border-line-width-bottom="0.0008in 0.0138in 0.0008in"
  fo:padding="0in" fo:border-left="none" fo:border-right="none"
  fo:border-top="none" fo:border-bottom="1.11pt double #808080"
  text:number-lines="false" text:line-number="0"
  style:join-border="false" />
  <style:text-properties fo:font-size="6pt"
  style:font-size-asian="6pt" style:font-size-complex="6pt" />
</style:style>

修改颜色并转到How does Open Office compress its files? 以拉回myreference.odt。然后运行pandoc如下(假设template_odt.xmlmyreference.odt都在当前目录下):

pandoc -f markdown -t odt --template=template_odt.xml --reference-odt=myreference.odt myfile.md -o myfile.odt

现在我有一个新问题:LibreOffice 必须修复输出odt 文件,但这是另一个问题...

【讨论】:

以上是关于Pandoc 的 ODT 模板中的彩色水平线的主要内容,如果未能解决你的问题,请参考以下文章

将 HTML 转换为 odt、doc、docx

RecyclerView中的彩色线条

如何制作pandoc降价表的水平布局?

使用带有 bookdown 的 pandoc 模板

在Linux上使用命令行将openoffice文档(odt)转换为PDF?

pandoc转pdf文件使用latex模板介绍(Linux环境)