Skip to content

Latest commit

 

History

History
44 lines (35 loc) · 1.86 KB

readthedocs_compile_fail.md

File metadata and controls

44 lines (35 loc) · 1.86 KB

当撰写好的sphinx文档上传到github,并同步到readthedocs.org,此时会发现编译错误,这是因为默认打开到pdf和epub选项是基于LaTex的,对字体处理有要求。

解决的方法是编辑conf.py,修改latex_elements设置段落:

latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
 
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
 
# Additional stuff for the LaTeX preamble.
#'preamble': '',
'preamble': r'''
\hypersetup{unicode=true}
\usepackage{CJKutf8}
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
\DeclareUnicodeCharacter{2203}{\ensuremath{\exists}}
\DeclareUnicodeCharacter{2200}{\ensuremath{\forall}}
\DeclareUnicodeCharacter{2286}{\ensuremath{\subseteq}}
\DeclareUnicodeCharacter{2713}{x}
\DeclareUnicodeCharacter{27FA}{\ensuremath{\Longleftrightarrow}}
\DeclareUnicodeCharacter{221A}{\ensuremath{\sqrt{}}}
\DeclareUnicodeCharacter{221B}{\ensuremath{\sqrt[3]{}}}
\DeclareUnicodeCharacter{2295}{\ensuremath{\oplus}}
\DeclareUnicodeCharacter{2297}{\ensuremath{\otimes}}
\begin{CJK}{UTF8}{gbsn}
\AtEndDocument{\end{CJK}}
''',
}

这里要注意的是,这段代码是配置LaTex,所以这些字符串必须加r,不要让pyhton解释。

所以务必检查一下几项:

  • 不要全局导入__future__.unicode_literals,这会让这段代码编程unicode解释,readthedocs编译的时候会出字符问题。
  • 检查项目中全局替换的部分(例如rst_epilog),如果修改到源文件,那么务必手动添加u前缀,否则会出现编码错误。

参考