使用 Pandoc 从带有文字表情符号字符的 Markdown 文件渲染 PDF

age*_*ser 7 markdown pandoc

我想转换降价文本,如:

This is a smile 
Run Code Online (Sandbox Code Playgroud)

到带有表情符号的 PDF。需要明确的是,我希望能够在源文本中插入表情符号字符本身,而不是像:smile:.

我怎样才能用 Pandoc 做到这一点?

Kur*_*fle 5

在最初过于肤浅地阅读了 OP 之后(忽略了他不需要:smile:源 Markdown 中使用& 朋友),这里有一个更好的答案。尝试以下其中一项:

pandoc my.markdown -o emoji.pdf --pdf-engine=lualatex -V mainfont="DejaVu Sans"
pandoc my.markdown -o emoji.pdf --pdf-engine=xelatex  -V mainfont="DejaVu Sans"
Run Code Online (Sandbox Code Playgroud)

如果您使用默认的 pdf-engine ( pdflatex),您将不会成功,但会收到类似的错误

 ! Package inputenc Error: Unicode character  (U+1F600)
 (inputenc)                not set up for use with LaTeX.
Run Code Online (Sandbox Code Playgroud)

如果您不指定参数,您将收到一条警告消息mainfonts mainfont

 [WARNING] Missing character: There is no  (U+1F604) in font [lmroman10-regular]:+tlig;
Run Code Online (Sandbox Code Playgroud)

对于 XeLaTeX 和

 [WARNING] Missing character: There is no  in font [lmroman10-regular]:mapping=tex-text;!
Run Code Online (Sandbox Code Playgroud)

更新

感谢@jpnadas 注意到我的答案中的拼写错误。该参数应该是-V mainfont=...(不是-V mainfonts!)。

我将其留给读者来测试正确的命令并查看其结果:

pandoc -o emoji.pdf --pdf-engine=lualatex -V mainfont="DejaVu Sans"
pandoc -o emoji.pdf --pdf-engine=xelatex  -V mainfont="DejaVu Sans"
Run Code Online (Sandbox Code Playgroud)

  • 我可以尝试其他字体吗?我在 Mac 上使用 MacTex 2019 Distribution。我刚刚收到 xelatex 错误:“kpathsea:make_tex: 文件名‘DejaVu Sans’无效,包含‘’”和“!包 fontspec 错误:找不到字体“DejaVu Sans”。”使用 lualatex,我收到上面列出的警告消息:“[警告]缺少字符:字体 DejaVuSans:mode=node;scrip 中没有 (U+1F316) (U+1F316)”。我看到空间被删除了。不知道那是什么。我将字体指定为“DejaVu Sans” (3认同)
  • 我认为您的答案中有一个拼写错误,参数不应该是“mainfont”,如“-V mainfont =“DejaVu Sans””吗? (2认同)

Ada*_*ert 0

尝试:smile:用 HTML 替换:

This is a smile <img src="https://github.com/images/icons/emoji/unicode/1f604.png"/>
Run Code Online (Sandbox Code Playgroud)