Пандо c с эмодзи и пиктограммами - PullRequest
1 голос
/ 04 февраля 2020

Есть ли способ получить PDF из файла Markdown, который содержит Unicode, Emoji и пиктограммы?

Я запускаю этот тест:

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

Со всеми моими системными шрифтами .

Лучший результат, который я получил, был с:

Я безуспешно пробовал другой формат ввода pando c (-f / --from) и латексный движок. Есть ли идеальный шрифт или какие-либо рекомендации, как этого добиться?

1 Ответ

0 голосов
/ 28 апреля 2020

Несколько дней go Я искал решение для этой конкретной проблемы, но не мог найти ничего ... поэтому я разработал свое собственное решение: фильтр Pando c для включения смайликов в сгенерированный PDF .

Однако существуют некоторые компромиссы и ограничения:

  • Мне пришлось использовать файл template.tex, поэтому, если вы уже используете шаблон, вы ' мне придется объединить части из моего шаблона с вашим. Это может быть настоящей болью ... но я пометил изменения, которые я сделал, к исходному template.tex, сгенерированному Pando c. По крайней мере, это может немного помочь.
  • У меня нет опыта работы с языком Lua для создания фильтра. Поэтому я попробовал Python, и это не сработало, как я ожидал, потому что я не смог найти библиотеку для перевода кодовых точек Emoji Unicode в то, с чем я мог бы работать. Наконец, я сделал это, используя Javascript, поэтому NodeJS требуется. Кроме того, некоторые NPM пакеты должны быть установлены.
  • Я использовал InkScape для преобразования SVG из онлайн-источников в PDF, чтобы их можно было вставить в PDF. Это необходимо, потому что LaTeX не распознавал формат изображения SVG.
  • В данный момент у меня еще не было времени для автоматической установки фильтра c. Проверьте репозиторий Git и используйте его оттуда ... это лучший совет, который я могу дать. Существует пример сценария для преобразования readme.md в pdf. Я также передал полученный PDF .
  • Я не знаю, будет ли он работать с xelatex или lualatex или чем-то другим, чем pdflatex, потому что у меня было время только протестируйте его, используя стандартный движок для Pando c, то есть pdflatex.

Использование фильтра Emoji

Предварительные условия: Pandoc и NodeJS

  1. Оформление хранилища

  2. Установка NPM необходимых пакетов:

    npm install
    
  3. Запуск Pando c, передавая фильтр, шаблон, правильный формат ввода, источник смайликов и так далее. Ниже приведена команда, используемая для компиляции файла example.pdf из файла readme.md:

    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 указывает имя файла сценария фильтра Emoji
    • -M emoji=noto-emoji - это параметр метаданных, который означает Emoji Фильтр читает, чтобы узнать, какие эмодзи вы хотите. На данный момент есть два варианта: noto-emoji и twemoji. Полный список смайликов можно посмотреть на unicode.org .
    • --from gfm - формат ввода, gfm означает GitHub Flavored Markdown. Я использую его, потому что он может конвертировать эмодзи в формате :__name__: в кодовые точки Unicode, которые мой фильтр может распознавать.
    • другие параметры не имеют значения для этого ответа ... они используются для настройки того, как ссылки появляются в окончательном PDF.

Я надеюсь, что этот ответ, и фильтр Emoji поможет! Любой дальнейший вопрос, пожалуйста, задавайте в комментарии ... возможно, если вы считаете, что я должен опубликовать и объяснить некоторые части кода. Я действительно не знаю, какие части могут быть полезны в кратком ответе, так как код довольно сложный.

В любом случае, не стесняйтесь спрашивать =)

...