1. 项目介绍

Sphinx EVAS Theme是一个为企业文档标准化而构建的sphinx主题,支持html,word和pdf标准渲染输出。

项目亮点:

  • 简化了文档构建过程,用户只需关注文档内容而无需关心复杂配置

  • 提供了美观、符合企业标准的HTML、PDF和Word渲染输出样式

  • 针对PDF输出优化了LaTeX模板和封面样式,美化了PDF渲染效果

  • 嵌入了适合打印美观的免费商用中文(SourceHanSansSC)和英文字体(DejaVuSans)

  • 新增了Word输出模板和构建命令,实现Word输出与PDF保持一致样式

  • 引入了常用的Sphinx扩展作为默认配置,减少用户配置工作

  • 提供了evas命令快速初始化文档项目模板,make命令进行编译构建

  • 所有配置参数均有中文注释说明,降低了使用门槛

本主题是基于sphinx_rtd_theme作为基础主题构建,做出了如下修改:

  • 新增latex导言和封面的模板,美化了PDF渲染样式

  • 嵌入了适合打印美观的免费商用中英文字体

  • 简化了PDF构建过程,由make latexpdf命令更改为make pdf命令

  • 新增word模板和构建命令,美化了word渲染样式,样式保持与PDF基本一致

  • 新增make all命令,以及环境检查

  • 简化conf.py配置过程,只需要更改文档内容信息即可

  • 引入常用的sphinx扩展(默认)

具体的配置参数在evas命令生成的项目模板source/conf.py文件中,每个配置参数均已中文注释详细说明。

用户通过简单的命令即可实现项目文档模板初始化(evas命令,取代sphinx-quickstart)、文档构建(make html, make docx, make pdf以及make all)工作。

_images/flow.png

1.1. 项目参考

感谢下列开源项目为本项目提供支持

sphinx:开源文档构建工具

sphinx_rtd_theme:使用最为广泛的Sphinx主题

sphinx_idf_theme:乐鑫科技的Sphinx主题

sphinx-jupyterbook-latex:支持LaTeX 输出的Sphinx扩展

esp-docs:乐鑫科技基于Sphinx开源文档构建环境

1.2. 效果预览

HTML显示效果

_images/html_preview1.jpg _images/html_preview2.jpg

PDF显示效果

_images/pdf_preview.jpg

1.3. 环境准备

sphinx_evas_theme支持在windows和linux环境下构建文档,目前已在windows 11以及ubuntu 22.04上进行了测试。

sphinx_evas_theme在windows下需要安装python, perl, xelatex以及latexmk。

sphinx_evas_theme是基于sphinx创建的主题,而sphinx本身是一个python脚本/库,所以先需要安装python,建议版本为3.7以上。

具体python的安装方式请参考官网以及其他教程,python安装完后会自动将python根目录以及Scripts目录添加到path系统环境变量中:

在构建pdf时,由于sphinx使用了latex语言作为中间语言,而编译latex需要latex编译环境,推荐安装texlive完整版。

apt-get install -y python3 python-is-python3 latexmk texlive-latex-recommended texlive-fonts-recommended texlive-xetex fonts-freefont-otf fonts-lmodern texlive-lang-chinese
  • Linux环境下不需要安装perl

由于Texlive自带了perl脚本环境,例如我的Texlive安装在了C:\texlive路径下,请将以下几个路径添加到windows path系统环境变量中:

  • C:\texlive\tlpkg\tlperl\bin

  • C:\texlive\bin\windows

  • C:\texlive\texmf-dist

_images/path_env.jpg

在上述环境安装完成后,请在windows cmd命令行或者linux终端中运行如下几个命令,如果没有显示错误,则代表环境安装完毕

  • python

  • xelatex

  • latexmk

  • perl (仅windows)

1.4. 如何安装Sphinx EVAS Theme

sphinx_evas_theme托管在PyPI中,通过python的pip安装:

pip install sphinx_evas_theme

安装过程会将所有主题的依赖包一并安装。

1.4.1. 在venv python虚拟环境下安装

在venv python虚拟环境下安装的命令如下,先新建一个空文件夹,然后在文件夹中输入:

pip install virtualenv

python -m venv venv

.\venv\Scripts\activate.bat   # windows环境

source venv/bin/activate    # linux环境

pip install sphinx_evas_theme

1.5. 如何使用

第一步

本项目的使用非常简单,只需要在任意空文件夹下执行evas命令,即可创建项目模板

_images/evas_init.jpg

提示: 默认source目录下,除了index.rst和conf.py为必需,其他均为示例文件,可删除。

第二步

创建一个markdown文件,并将文件名添加到index.rst文件末尾。

示例: 例如markdown文件为readme.md,则添加readme到index.rst文件末尾。

第三步

修改conf.py文件,填写标题、子标题、作者等信息

第四步

构建html、pdf、docx文档

evas            # 创建项目模板

make html       # 生成html网页,文件在_build/html路径下,index.html为入口

make docx       # 生成office word文档,文件在_build/docx路径下

make pdf        # 生成office pdf文档,文件在_build/pdf路径下

make all        # 一次同时生成html, word, pdf

make clean      # 清空_build文件夹

make livehtml   # 编辑markdown时实时预览html网页

windows下每次执行make命令时会自动检查环境,如果python, perl, xelatex, latexmk均OK,则会根据命令参数构建对应文档,否则会直接中断

_images/env_check.jpg

目前pdf封面左下角会显示evas版权信息,如果您需要修改,请自行fork此项目并在\sphinx_evas_theme\latex_templates\titlepage.tex 第45行修改版权信息

1.5.1. 本项目引入了哪些Sphinx扩展?

引入的扩展有:

  • myst_parser

  • sphinx_markdown_tables

  • sphinx_markdown_checkbox

  • sphinx_copybutton

  • sphinx_design

  • sphinx.ext.intersphinx

  • sphinx.ext.autodoc

  • sphinx.ext.autosummary

  • sphinx.ext.mathjax

  • sphinx.ext.viewcode

  • sphinx.ext.githubpages

  • sphinx.ext.napoleon

  • sphinx_togglebutton

  • docxbuilder

1.5.2. 文档编写语言

Sphinx EVAS Theme已经默认开启了reStructuredText和Markdown支持

  • 如果你更倾向于使用Markdown,请遵循MyST Markdown,初始模板中已提供示例,使用其他Markdown语法可能会导致html,word或pdf内容缺失无法显示或者显示异常。

    MyST Markdown语法请参考:https://mystmd.org/guide/typography

  • 如果你更倾向于使用reStructuredText,请参考reStructuredText语法。

1.6. Sphinx EVAS Theme 目录结构

sphinx_evas_theme
│
│
├───sphinx_evas_theme          # 主题主目录
│   ├───docx_templates         # 支持word文档输出,以及word模板文件
│   │
│   ├───latex_templates        # latex模板,包含导言和封面样式
│   │   └───fonts              # pdf字体文件
│   ├───locale                 # 国际化翻译,仅支持中文和英文
│   │
│   ├───static                 # html js, css, logo
│   │   ├───css                # html css样式
│   │   │   └───fonts          # html字体文件
│   │   └───js
│   └───templates              # 项目模板,详见下一章
│       └───source
│           ├───_static
│           └───_templates
│
└───tests                      # pytest 测试用例

1.7. 项目模板目录结构

├───source             # 文档内容存放目录
│   ├───_static        # 文档自定义html静态元素,如css,js存放目录,默认为空
│   └───_templates     # 文档自定义html模板,如自定义页眉页脚等,默认为空,详细请参考Sphinx教程
└───_build             # 构建目录,存放生成的文档
    ├───doctrees
    ├───docx           # word生成路径
    ├───html           # html生成路径
    ├───latex          # 构建pdf中生成的latex目录
    └───pdf            # pdf生成路径

1.8. Live Preview 实时在线预览

如果你想在编辑文档时实时查看更改后的html,不必每次都重新make html,然后打开html,可以使用如下命令:

make livehtml

按照提示打开这个链接:http://127.0.0.1:8000

_images/live_preview.jpg

这样你在每次更改完markdown后,内容都会直接呈现在html网页中。

如果你使用的是VS Code进行MyST Markdown编写,强烈建议安装MyST-Markdown扩展,它支持语法高亮、实时预览