是否有办法从包含Unicode,表情符号和象形文字的Markdown文件中获取PDF?
我正在运行此测试:
echo ':smile: → ★ 🤷 👍 ⚠️' | pandoc -f markdown+emoji --latex-engine=xelatex -o foo.pdf
使用我的所有系统字体。
到目前为止,我得到的最好结果是:
我尝试了一些不同的pandoc输入格式(-f / --from
)和乳胶引擎,但均未成功。是否有完美的字体或有关如何实现该效果的任何建议?
几天前,我正在寻找针对此确切问题的解决方案,但找不到任何...所以我开发了自己的解决方案:一个Pandoc filter to include emojis in the generated PDF。
尽管有一些折衷和限制:
template.tex
文件,因此,如果您已经在使用模板,则必须将我的模板中的片段与您的模板合并。那可能真是个痛苦……但是我标记了我对Pandoc生成的原始template.tex
所做的更改。至少这可以有所帮助。Lua
语言进行过滤的经验。因此,我尝试了Python
,但它没有按预期的方式工作,因为我找不到可以将Unicode表情符号代码点转换为我可以使用的库的库。最后,我使用Javascript
进行了设置,因此需要NodeJS
。另外,必须安装一些NPM软件包。InkScape
将SVG从在线资源转换为PDF,以便可以将它们插入PDF。这是必要的,因为LaTeX无法识别SVG图像格式。readme.md
转换为pdf。我还提交了readme.md
。xelatex
或除lualatex
以外的任何其他版本一起使用,因为我只有时间使用Pandoc的默认引擎pdflatex
对其进行测试。先决条件:pdflatex
和Pandoc
检出存储库
安装所需的NPM软件包:
NodeJS
运行Pandoc,传递过滤器,模板,正确的输入格式,表情符号来源,等等。以下是用于从readme.md编译example.pdf的命令:
npm install
pandoc --template="template.tex" -o example.pdf readme.md \
--filter=emoji_filter.js -M emoji=noto-emoji --from gfm \
-V links-as-notes=true -V colorlinks -V urlcolor=NavyBlue
指示存储库中存在的template.tex文件--template="template.tex"
代表输出文件名-o example.pdf
是输入文件名readme.md
表示表情符号过滤器脚本文件名--filter=emoji_filter.js
是表情符号过滤器读取的元数据参数,以了解您想要哪种表情符号。目前有两个选项:-M emoji=noto-emoji
和noto-emoji
。您会看到twemoji
。noto-emoji
twemoji
--from gfm
格式的表情符号转换为我的过滤器可以识别的Unicode代码点。我希望这个答案,表情符号过滤器会有所帮助!如有其他疑问,请在评论中提问...也许如果您认为我应该发布并解释代码的某些部分。我真的不知道哪些部分可能对简洁的回答有所帮助因为代码很复杂。
无论如何,随时询问=)