我正在尝试使用 pandoc 的 markdown2pdf 生成文档 pdf 文件。我的源文件包含一些西里尔 UTF-8 符号。我的系统语言环境是 en_US.UTF-8。
在默认语言环境中运行时,markdown2pdf 无法加载文档:
$ markdown2pdf doc.md -o doc.pdf markdown2pdf:/tmp/pandoc/doc.log:hGetContents:无效参数(无效或不完整的多字节或宽字符)
如果我设置 LANG=ru_RU.UTF-8,markdown2pdf 可以正常加载文档,启动 pandoc,但 pandoc 会中断(请注意不同的错误文本):
$ LANG=ru_RU.UTF-8 markdown2pdf doc.md -o doc.pdf markdown2pdf:pandoc:doc.md:hGetContents:无效参数(无效或不完整的多字节或宽字符)
我不想更改系统区域设置。如何解决此问题?
系统信息:
$ lsb_release-a 无可用的 LSB 模块。 分销商 ID:Ubuntu 描述:Ubuntu 10.04.1 LTS 版本:10.04 代号:lucid $ uname -a Linux localhost 2.6.32-24-generic #38-Ubuntu SMP 星期一 7 月 5 日 09:20:59 UTC 2010 x86_64 GNU/Linux $ pandoc --version pandoc 1.5.1.1
答案1
我必须手动升级到 pandoc 1.6 来修复这个错误:
# Install and update cabal (Haskell's package manager)
sudo apt-get install cabal
cabal update
cabal install cabal-install
# Put cabal's executables to path
echo "PATH=${PATH}:${HOME}/.cabal/bin" >> ${HOME}/.bashrc
source ${HOME}/.bashrc
# Reset bash's path cache
hash -r
cabal install -fhighlighting pandoc