我在OS X上尝试Pandoc,到目前为止的结果令人印象深刻。然而,一个阻塞问题是让CSS样式处理内联代码示例。我将从Markdown转换为PDF。
我的源代码中有这个字符串:
* Create a simple HTML document (<span class="filename">simple.html</span>) and load it into the browser via the file system
我也试过这个:
* Create a simple HTML document (`simple.html`{.filename}) and load it into the browser via the file system
我想申请课程&#34; filename&#34;在每种情况下对所附文本,但它似乎没有对输出做任何事情。然而,手册说:
某些输出格式可以使用此信息进行语法突出显示。目前,使用此信息的唯一输出格式是HTML和LaTeX。
这是我的命令:
pandoc \
--output ./output.pdf \
--css source/styles.css \
source/en/docs/input.md
我正在转换为PDF,这是由Pandoc内部由LaTeX编写的。我可以让这个工作吗?或者,我可以使用使用LaTeX命令定义的样式吗? - 它不一定是CSS。但是,它必须是一个样式系统 - 在每种情况下都不能改变斜体/字体/颜色属性。
我尝试暂时将输出发送到HTML,在这种情况下,样式会直接从特定样式资源导入。因此,我的样式表规范和范围标记是正确的,至少对于一种输出格式。
几个事后:
答案 0 :(得分:2)
&#34;我想申请班级&#34;文件名&#34;在每种情况下都包含在文本中,但它似乎没有对输出做任何事情。&#34;
适用于HTML。以交互方式运行Pandoc, ^D
以查看生成的代码:
$> pandoc -f markdown -t html
* Create a simple HTML document (`simple.html`{.filename}) and load it.
^D
<ul>
<li>Create a simple HTML document (<code class="filename">simple.html</code>) and load it.</li>
</ul>
如果使用.filename
类,它对LaTeX不起作用。您需要使用已知的类名之一:
$> pandoc -f markdown -t latex
* Create a simple HTML document (`simple.html`{.filename}) and load it.
^D
\begin{itemize}
\tightlist
\item
Create a simple HTML document (\texttt{simple.html}) and load it.
\end{itemize}
现在使用其中一个已知的类名,例如.bash
,.postscript
,.php
,...:
$> pandoc -f markdown -t latex
* Create a simple HTML document (`simple.html`{.bash}) and load it.
^D
\begin{itemize}
\tightlist
\item
Create a simple HTML document (\VERB|\KeywordTok{simple.html}| and
load it.
\end{itemize}
要将HTML + CSS转换为PDF,您还可以查看免费用于非商业用途的PrinceXML。
答案 1 :(得分:1)
我根本不认识LaTeX,但是使用this helpful manual破解了这个解决方案。首先,创建一个样式:
\definecolor{silver}{RGB}{230,230,230}
\newcommand{\inlinecodeblock}[1]{
\colorbox{silver}{
\texttt{#1}
}
}
以下是如何使用它:
Some \inlinecodeblock{inline code}, and some widgets, go here
这将创建一个具有背景颜色和等宽字体的样式。边距和填充对我的偏好来说有点大,但它是一个非常有用的开始。这是它的样子:
缺点是,如果我希望输出到支持样式的格式(例如HTML),那么这些格式就会丢失。此外,我的解决方案仅适用于LaTeX / PDF。因此,如果您可以解决这些问题,请添加更好的答案!
附录:我有一个更好的方法,因此:
\newcommand{\inlinecodeblock}[1]{
\fboxsep 1pt
\fboxrule 0pt
\colorbox{silver}{\strut{\texttt{#1}}}
}
这可以避免水平填充过多的问题 - 我认为这是colorbox
参数中的换行符。我添加了strut
,无论文本是否有下延,都会突出显示相同的高度。
虽然它并不完美 - 盒子外面仍然有太多的水平边距,并且一个盒子后面的逗号仍会孤立到下一行。我可能会放弃使用LaTeX,并从Pandoc渲染为HTML,然后使用wkhtmltopdf
来渲染最终文档。