3

Я создал документ уценки в Emacs. Документ на украинском языке, поэтому в нем есть несколько букв кириллицы. Я пытаюсь преобразовать его в PDF, используя режим Pandoc. Но это не так с:

markdown2pdf: ! LaTeX Error: Command \CYRP unavailable in encoding OT1.
! LaTeX Error: Command \cyrl unavailable in encoding OT1.
! LaTeX Error: Command \cyra unavailable in encoding OT1.
! LaTeX Error: Command \cyrn unavailable in encoding OT1.
! LaTeX Error: Command \CYRV unavailable in encoding OT1.
! LaTeX Error: Command \cyrs unavailable in encoding OT1.
! LaTeX Error: Command \cyrt unavailable in encoding OT1.
! LaTeX Error: Command \cyru unavailable in encoding OT1.
! LaTeX Error: Command \cyrp unavailable in encoding OT1.
! LaTeX Error: Command \CYRN unavailable in encoding OT1.
! LaTeX Error: Command \cyre unavailable in encoding OT1.
! LaTeX Error: Command \cyrv unavailable in encoding OT1.
! LaTeX Error: Command \cyre unavailable in encoding OT1.
! LaTeX Error: Command \cyrl unavailable in encoding OT1.
! LaTeX Error: Command \cyri unavailable in encoding OT1.
! LaTeX Error: Command \cyrk unavailable in encoding OT1.
! LaTeX Error: Command \cyri unavailable in encoding OT1.
! LaTeX Error: Command \cyrishrt unavailable in encoding OT1.
! LaTeX Error: Command \cyrv unavailable in encoding OT1.
! LaTeX Error: Command \cyrs unavailable in encoding OT1.
! LaTeX Error: Command \cyrt unavailable in encoding OT1.
! LaTeX Error: Command \cyru unavailable in encoding OT1.
! LaTeX Error: Command \cyrp unavailable in encoding OT1.
! LaTeX Error: Command \cyrd unavailable in encoding OT1.
! LaTeX Error: Command \cyro unavailable in encoding OT1.
! LaTeX Error: Command \CYRO unavailable in encoding OT1.
! LaTeX Error: Command \CYRO unavailable in encoding OT1.
! LaTeX Error: Command \cyrp unavailable in encoding OT1.
! LaTeX Error: Command \cyrr unavailable in encoding OT1.
! LaTeX Error: Command \cyro unavailable in encoding OT1.
! LaTeX Error: Command \cyrg unavailable in encoding OT1.
! LaTeX Error: Command \cyrr unavailable in encoding OT1.
! LaTeX Error: Command \cyra unavailable in encoding OT1.
! LaTeX Error: Command \cyrm unavailable in encoding OT1.
! LaTeX Error: Command \cyru unavailable in encoding OT1.
! LaTeX Error: Command \cyrv unavailable in encoding OT1.
! LaTeX Error: Command \cyra unavailable in encoding OT1.
! LaTeX Error: Command \cyrn unavailable in encoding OT1.
markdown2pdf: /tmp/pandoc/Thesis-outline-ukr.log: hGetContents: invalid argument (Invalid or incomplete multibyte or wide character)

Как мне сделать так, чтобы он использовал правильную кодировку? Должен ли я указать что-то в моем документе уценки? Или есть какие-то настройки для самой markdown2pdf?

UPD: я добавил это в .emacs, но это не помогло:

;; set up unicode
(prefer-coding-system       'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
;; This from a japanese individual.  I hope it works.
(setq default-buffer-file-coding-system 'utf-8)
;; From Emacs wiki
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))

UPD2: файл уценки находится здесь. Контрольные суммы:

gleontiev@gleontiev-laptop:~$ sum Documents/Thesis-outline-ukr.markdown 
17120     4
gleontiev@gleontiev-laptop:~$ cksum Documents/Thesis-outline-ukr.markdown 
2128209357 4078 Documents/Thesis-outline-ukr.markdown
gleontiev@gleontiev-laptop:~$ openssl dgst -sha1 Documents/Thesis-outline-ukr.markdown 
SHA1(Documents/Thesis-outline-ukr.markdown)= d36a0b4fb051e6928751eba152a5555768d1cb13

3 ответа3

1

Я полагаю, что уценка ожидает Unicode. возможно, вы можете попробовать использовать recode, чтобы изменить кодировку с кодировки по умолчанию на UTF8.


В соответствии с руководством Pandoc markdown2pdf

Предполагается, что ввод осуществляется в кодировке UTF – 8. Если ваша локальная кодировка символов не UTF – 8, вы должны передать ввод через iconv:

iconv -t utf-8 input.txt | markdown2pdf

markdown2pdf предполагает, что пакеты unicode, array, fancyvrb, graphicx и ulem находятся в пути поиска латекса. Если эти пакеты не включены в настройки латекса, их можно получить по адресу http://ctan.org.

По общему признанию, хотя я косвенно использую LaTeX, я часто нахожу его сообщения об ошибках и предупреждениях трудными для понимания и обработки. Таким образом, хотя вышеперечисленное выглядит как многообещающий путь, он может оказаться тупиком.


Другая возможность - попробовать уценку в сочетании с htmldoc вместо markand2pdf от Pandoc - я не знаю, решит ли это проблему, но, возможно, стоит попробовать.


Я не получаю те же контрольные суммы, что и вы

$ wget -O Cyrillic2.markdown.txt http://paste.ideaslabs.com/download/J58n5B6cGp
11:06:08 (20.53 KB/s) - `Cyrillic2.markdown.txt' saved [4078/4078]

$ sum Cyrillic2.markdown.txt
40224     4 Cyrillic2.markdown.txt

$ cksum Cyrillic2.markdown.txt
3250703884 4078 Cyrillic2.markdown.txt

$ openssl dgst -sha1 Cyrillic2.markdown.txt
SHA1(Cyrillic2.markdown.txt)= e1d6d92b5c7a3c8673ab5dff4bfe01628b17d77a
0
  1. Генерируйте TeX из уценки, используя pandoc.
  2. Отредактируйте текстовый файл. Найдите команду

    \usepackage[T1]{fontenc}
    

    и изменить его на

    \usepackage[T2A]{fontenc}
    
  3. Добавьте также следующую команду:

    \usepackage[ukrainian]{babel}
    
  4. Скомпилируйте текстовый файл, используя pdflatex .

0

Немного опоздал в игре, вот как я это решил.

  • Используйте --latex-engine=xelatex для UTF-8 по умолчанию везде.
  • Используйте шрифты с необходимыми символами.

Командная строка, которая работает для меня это

pandoc --latex-engine=xelatex -V mainfont:"Linux Libertine O" -V monofont="Ubuntu" -o out.pdf in.md

Мне еще предстоит найти подходящий monofont который поддерживает кириллицу с фиксированной шириной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .