erro de latex markdown2pdf

3

Eu criei um documento markdown no emacs. O documento está em ucraniano, então tem algumas letras cirílicas. Estou tentando convertê-lo para pdf usando o modo pandoc. Mas isso falha com:

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)

Como faço para usar a codificação correta? Devo especificar algo no meu documento de desconto? Ou existem configurações para o markdown2pdf em si?

UPD : Eu adicionei isso ao .emacs, mas não ajudou:

;; 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 : O arquivo de remarcação é Aqui . Checksums:

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
folone
fonte

Respostas:

1

Eu acredito que o markdown espera Unicode. talvez você possa tentar usar o recode para alterar a codificação de sua codificação padrão para UTF8.


De acordo com o Pandoc manual markdown2pdf

Supõe-se que a entrada esteja na codificação de caracteres UTF – 8. Se o seu personagem local   codificação não é UTF-8, você deve canalizar a entrada através de iconv:

iconv -t utf-8 input.txt | markdown2pdf

markdown2pdf assume que os pacotes unicode, array, fancyvrb, graphicx e ulem   estão no caminho de pesquisa do latex. Se esses pacotes não estiverem incluídos na sua configuração de látex,   eles podem ser obtidos a partir de http://ctan.org .

Evidentemente, embora eu use indiretamente o LaTeX, muitas vezes acho que é difícil entender e agir de acordo com as mensagens de erro e aviso. Assim, embora o acima pareça um caminho promissor, pode ser um beco sem saída.


Outra possibilidade é tentar o markdown em conjunto com htmldoc em vez do markdown2pdf do Pandoc - não sei se isso vai resolver o problema, mas pode valer a pena tentar.


Eu não estou recebendo o mesmo checksums como você

$ 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
RedGrittyBrick
fonte
Eu atualizei minha resposta. Configurando a codificação padrão no emacs e executando recode UTF8 <filename> não ajudou.
folone
Você pode fornecer um pequeno arquivo de marcação de amostra? idealmente com uma soma de verificação.
RedGrittyBrick
Veja a resposta editada para a soma de verificação
RedGrittyBrick
Eu atualizei minha pergunta com checksums.
folone
Desculpe, não consigo fazer funcionar melhor do que você. Veja outra sugestão acima.
RedGrittyBrick
0
  1. Gere o TeX a partir do markdown usando pandoc.
  2. Edite o arquivo tex. Localize o comando

    \usepackage[T1]{fontenc}
    

    e mude para

    \usepackage[T2A]{fontenc}
    
  3. Adicione o seguinte comando também:

    \usepackage[ukrainian]{babel}
    
  4. Compile o arquivo tex usando pdflatex.

Roman Cheplyaka
fonte
Você pode explicar como isso ajuda? Eu tenho um documento em inglês, mas preciso de alguns exemplos em cirílico, e alguns em japonês, etc. O T2A seleciona o cirílico especificamente?
tripleee
1
Sim, t2a é para cirílico. Esta resposta é um pouco antiga - hoje em dia aconselho a utilização do xetex, o que também resolveria o seu problema multilingue. Se você pegar a saída do pandoc atual e rodar através do xelatex, ele pode até funcionar sem modificações.
Roman Cheplyaka
Obrigado pela dica xetex / xelatex, eu poderia ter ficado preso no labirinto por muito mais tempo.
tripleee
0

Um pouco atrasado no jogo, aqui está como eu resolvi isso.

  • Usar --latex-engine=xelatex para o padrão UTF-8 em todos os lugares.
  • Use fontes com os glifos necessários.

A linha de comando que funciona para mim é

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

Eu ainda tenho que descobrir um adequado monofont que suporta cirílico, que é realmente largura fixa.

tripleee
fonte
Sugestão de @RomanCheplyaka que me cutucou na direção certa.
tripleee