PDF中的Pandoc语法突出显示不起作用
问题描述
pandoc --version
产生:
pandoc 1.12.2.1
Compiled with texmath 0.6.5.2, highlighting-kate 0.5.5.1.
Syntax highlighting is supported for the following languages:
actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog, clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d, diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang, fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, java, javadoc, javascript, json, jsp, julia, latex, lex, literatecurry, literatehaskell, lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines, modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml, octave, pascal, perl, php, pike, postscript, prolog, python, r, relaxngcompact, rhtml, roff, ruby, rust, scala, scheme, sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl, xml, xorg, xslt, xul, yacc, yaml
Default user data directory: /home/xiaolong/.pandoc
Copyright (C) 2006-2013 John MacFarlane
Web: http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.
我正在尝试以下方法:
```python
Python 3.4.3 |Anaconda 2.3.0 (64-bit)| (default, Oct 19 2015, 21:52:17)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import random # seed is determined here, if not set by the developer themself
>>> random.randint(0, 100)
50
>>> random.randint(0, 100)
62
>>> random.randint(0, 100)
53
>>> random.randint(0, 100)
17
>>> random.seed("I am a hashable object.")
>>> random.randint(0, 100)
41
>>> random.seed("I am a hashable object.")
>>> random.randint(0, 100)
41
>>> random.randint(0, 100)
88
>>> random.seed("I am a hashable object.")
>>> random.randint(0, 100)
41
>>> random.randint(0, 100)
88
````````````````````````````````````````````````````````````````````````````````
我使用的编译 PDF 的命令是:
The command to compile my PDF I use is:
pandoc --read=markdown --table-of-contents --toc-depth=2 --preserve-tabs --standalone --template=template.latex --latex-engine=xelatex Hausarbeit.md --highlight-style=pygments -o Hausarbeit.pdf
这是我的 template.latex
中的代码:
This is code I have in my template.latex
:
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(verbatim-in-note)$
usepackage{fancyvrb}
$endif$
根据 Pandoc 文档 Pandoc 文档,这应该会导致突出显示的文本Python 语言.但是,该代码块中的所有内容都只会变成等宽,并且不会应用颜色.
According to the Pandoc documentation Pandoc documentation this should result in highlighted text for the Python language. However, everything in that code block only becomes monospace and no colors are applied.
更何况,编译的时候出错了:
What's more is, that there is an error when compiling:
pandoc: Error producing PDF from TeX source.
! LaTeX Error: Environment Shaded undefined.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
GenericError ...
endgroup
l.200 egin{Shaded}
我的猜测是,模板中缺少定义 Shaded
的内容.我什至安装了一些名为 libghc-highlighting-kate-dev
的 highlighting-kate
包,因为我在某处读到,这是 pandoc 使用的,但无济于事,文本保持黑色.
My guess is, that there is something missing in the template to define Shaded
. I even installed some package of highlighting-kate
named libghc-highlighting-kate-dev
, because I read somewhere, that this is what pandoc uses, but to no avail, the text stays black.
如何让语法高亮工作?
编辑#1
当我简单地缩进代码以使用代码的标准降价语法时,该错误没有出现.但在这种情况下,我本身不会有任何语法突出显示.
That error did not appear, when I simply indented the code to use standard markdown syntax for code. But in that case I'll not have any syntax highlighting per se.
编辑#2
标签PDF"、Python"和syntax-highlighting"确实是相关的,因为这专门用于创建 PDF 文件,并且专门用于语法突出显示.也可能只是在创建的 PDF 文件中突出显示 python 代码存在问题,因此 python 标签也是相关的.请在过快下结论之前阅读问题.
The tags "PDF", "Python" and "syntax-highlighting" are indeed related, since this is specifically about creating a PDF file and specifically about syntax highlighting. Also it could be that there is only a problem with highlighting python code in the created PDF files, so the python tag is also related. Please read the question before concluding too quickly.
解决方案
尝试在 pandoc 编译命令中添加 --listings
选项:
Try to add --listings
option to your pandoc compile command:
pandoc --read=markdown --table-of-contents --toc-depth=2 --preserve-tabs --standalone --template=template.latex --latex-engine=xelatex --listings Hausarbeit.md --highlight-style=pygments -o Hausarbeit.pdf
相关文章