gpt4 book ai didi

unicode - 带有表情符号和象形文字的 Pandoc

转载 作者:行者123 更新时间:2023-12-03 19:18:16 50 4
gpt4 key购买 nike

有没有办法从包含 unicode、表情符号和象形文字的 Markdown 文件中获取 PDF?

我正在运行这个测试:

echo ':smile: → ★ 🤷 👍 ⚠️' | pandoc -f markdown+emoji --latex-engine=xelatex -o foo.pdf

使用我所有的系统字体。

到目前为止我得到的最好结果是:
  • DejaVu Sans字体:

    enter image description here
  • NotoEmoji Nerd Font :

    enter image description here

  • 我尝试了一些不同的 pandoc 输入格式( -f / --from )和 latex 引擎,但没有成功。是否有完美的字体或有关如何实现的任何建议?

    最佳答案

    几天前,我正在寻找这个确切问题的解决方案,
    但找不到任何......所以我开发了自己的解决方案:
    Pandoc filter to include emojis in the generated PDF .

    但是有一些妥协和限制:

  • 我不得不使用 template.tex文件,因此如果您已经使用了模板,则必须将我的模板中的部分与您的模板合并。这可能是一个真正的痛苦...但我标记了我对原始 template.tex 所做的更改由 Pandoc 生成。至少这会有所帮助。
  • 我没有 Lua 的经验语言来制作过滤器。所以我尝试了 Python ,它没有按我预期的那样工作,因为我找不到一个库来将 unicode 表情符号代码点转换为我可以使用的东西。最后,我使用 Javascript 做了它, 所以 NodeJS是必须的。此外,必须安装一些 NPM 包。
  • 我用过 InkScape将 SVG 从在线资源转换为 PDF,以便将它们插入到 PDF 中。这是必要的,因为 LaTeX 无法识别 SVG 图像格式。
  • 此时,我还没有时间实现过滤器的自动安装。
    checkout Git 存储库,然后从那里使用它……这是我能给出的最好建议。有一个示例脚本可以转换 readme.md 到pdf。我也提交了resulting PDF .
  • 我不知道它是否适用于 xelatexlualatex或除 pdflatex 以外的任何内容,因为我只有时间使用 Pandoc 的默认引擎来测试它,即 pdflatex .

  • 使用表情符号过滤器

    先决条件: PandocNodeJS
  • checkout 存储库
  • 安装所需的 NPM 包:
    npm install
  • 运行 Pandoc,传递过滤器、模板、正确的输入格式、表情符号源等。以下是用于从 readme.md 编译 example.pdf 的命令:
    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="template.tex"指示存储库中存在的 template.tex 文件
  • -o example.pdf表示输出文件名
  • readme.md是输入文件名
  • --filter=emoji_filter.js表示表情符号过滤脚本文件名
  • -M emoji=noto-emoji是表情符号过滤器读取的元数据参数,以了解您想要什么样的表情符号。目前有两个选项:noto-emojitwemoji .你可以看到一个 full emoji list at unicode.org .
  • noto-emoji : 指的是Noto Color Emojis by Google
  • twemoji : 指的是Twemoji by Twitter
  • --from gfm是输入格式,gfm 表示 GitHub Flavored Markdown。我使用它是因为它可以转换格式 :__name__: 的表情符号unicode 代码点,我的过滤器可以识别。
  • 其他参数对这个答案没有意义……它们用于调整链接在最终 PDF 中的显示方式。

  • 我希望这个答案和表情符号过滤器会有所帮助!
    还有什么问题,请在评论中提问...
    也许您认为我应该发布并解释代码的某些部分。
    我真的不知道哪些部分可能对简洁的答案有所帮助
    因为代码相当复杂。

    无论如何,随时问=)

    关于unicode - 带有表情符号和象形文字的 Pandoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057064/

    50 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com