我需要输出一些带有彩色背景的字节的十六进制数据。表示红色颜色值的数据中的字节应该具有红色背景。所以我才选择
<emphasis role="red"></emphasis>成为你选择的标签。
HTML输出
对于HTML输出,我使用
<xsl:param name="emphasis.propagates.style" select="1"/>在xsl文件和
.red {
background-color: red;
}在样式表中。这是完美无缺的。
PDF输出
对于PDF输出,我使用dblatex并尝试(文件fo.xsl)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:d="http://docbook.org/ns/docbook"
xmlns="http://www.w3.org/TR/xhtml1/transitional"
version="1.0">
<xsl:param name="draft.mode">no</xsl:param>
<xsl:param name="imagedata.default.scale">maxwidth=12cm</xsl:param>
<xsl:template match="emphasis[@role='red']">
<xsl:param name="content">
<xsl:apply-templates/>
</xsl:param>
<xsl:text>{\color{red}</xsl:text>
<xsl:copy-of select="$content"/>
<xsl:text>}</xsl:text>
</xsl:template>
</xsl:stylesheet>和(文件test.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
<article lang="en">
<title>Test</title>
<para>
<screen>0240h: 00 20 <emphasis role="red">00</emphasis> 21</screen>
</para>
</article>使用以下命令构建用于检查的latex源代码:
dblatex --backend=pdftex --xslt=xsltproc \
--input-format=xml --type=tex \
--xsl-user=fo.xsl --verbose --output=test.tex test.xml这不管用。突出强调的文本仍然是斜体,如结果test.tex的摘录所示:
\begin{lstlisting}[firstnumber=1,escapeinside={<t>}{</t>},moredelim={**[is][\bfseries]{<b>}{</b>}},moredelim={**[is][\itshape]{<i>}{</i>}},]
0240h: 00 20 <i>00</i> 21\end{lstlisting}我做错了什么?
发布于 2013-12-28 18:39:42
正如mzjn所说,屏幕标签是一个问题。在读取链接资源之后,在本例中对我工作的最后一个模板,并产生类似于html外观的输出,如下所示:
<xsl:template match="emphasis[@role='red']" mode="latex.programlisting">
<xsl:param name="co-tagin" select="'<:'"/>
<xsl:param name="rnode" select="/"/>
<xsl:param name="probe" select="0"/>
<xsl:param name="content">
<xsl:apply-templates/>
</xsl:param>
<xsl:text><t>\colorbox{red}{</xsl:text>
<xsl:copy-of select="$content"/>
<xsl:text>}</t></xsl:text>
</xsl:template>这将导致以下乳胶输出:
\begin{lstlisting}[firstnumber=1,escapeinside={<t>}{</t>},moredelim={**[is][\bfseries]{<b>}{</b>}},moredelim={**[is][\itshape]{<i>}{</i>}},]
0240h: 00 20 <t>\colorbox{red}{00}</t> 21\end{lstlisting}也许在列表中再添加一个更好的方法,比使用内部的逃避方法更好,但是有了这个解决方案,这个问题就会为我解答了。
https://stackoverflow.com/questions/20726153
复制相似问题