![](/img/trans.png)
[英]How Can I Style Page Numbers When Converting Markdown to PDF with pandoc?
[英]Using CSS when converting Markdown to PDF with Pandoc
我正在 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
我想在每种情况下将类“文件名”应用于封闭的文本,但它似乎对输出没有任何作用。 但是手册上说:
某些输出格式可以使用此信息进行语法高亮显示。 目前,唯一使用此信息的输出格式是 HTML 和 LaTeX。
这是我的命令:
pandoc \
--output ./output.pdf \
--css source/styles.css \
source/en/docs/input.md
我正在转换为 PDF,它是由 Pandoc 在内部由 LaTeX 编写的。 我可以让这个工作吗? 或者,我可以使用使用 LaTeX 命令定义的样式吗? - 它不必是 CSS。 但是,它必须是一个样式系统 - 在每种情况下都无法更改斜体/字体/颜色属性。
我尝试将输出临时发送到 HTML,在这种情况下,样式是直接从特定样式资产导入的。 所以,我的样式表规范和跨度标记是正确的,至少对于一种输出格式是正确的。
一些事后的想法:
“我想在每种情况下将“文件名”类应用于所附文本,但它似乎对输出没有任何作用。”
它适用于 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 ,它可免费用于非商业用途。
我根本不知道 LaTeX,但是已经使用这个有用的手册破解了这个解决方案。 首先,创建一个样式:
\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
参数中的colorbox
造成的。 我添加了strut
,无论文本是否有strut
,它都会保持高亮显示相同的高度。
虽然它并不完美 - 框外的水平边距仍然太多,框后的逗号仍然会孤立到下一行。 我可能会放弃 LaTeX,从 Pandoc 渲染为 HTML,然后使用wkhtmltopdf
渲染最终文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.