Sphinx+reStructuredText:变量的使用

在处理技术文档时,对于一些经常出现的内容可以将其定义为变量处理,便于多人协作时书写统一和自动更新。
本文介绍使用 Sphinx+reStructuredText 制作技术文档时,如何实现变量的功能。

关于变量

变量,顾名思义,即可以发生变化的值。在技术文档中,可以将一些经常出现或经常需要变化的文本处理为变量,以实现:

  • 多人协同写作时保持形式统一
  • 值变化时保证所有文档的自动更新

常见的变量文本有:

  • 公司名称
  • 产品名称
  • 日期
  • 版本
  • 版权日期

使用过 Adobe FrameMaker 的用户知道,Adobe FrameMaker 支持变量的使用,并且包含系统变量和自定义变量两类。其中,
系统变量即 Adobe FrameMaker 默认提供的变量,例如文件名称、日期等,用户可以更改变量的值,但无法删除系统变量本身。
自定义变量即用户可以在 Adobe FrameMaker 创建的文档中自由定义并更改的变量,用户既可以更改变量的值,也可以增删变量本身。

与上述类似,Sphinx+reStructuredText 中也可以实现 “系统变量”和“自定义变量”的功能,“自定义变量中”又可以根据变量的生效范围,分为全局变量和局部变量。

下面就来看具体如何应用。

系统变量

在Sphinx配置环境中,系统默认提供了project、copyright、author、version、release等 “系统变量”(Sphinx系统中称之为“project information”),可以在使用 “sphinx-quickstart” 过程中输入,或者在后期生成的 conf.py 文件里个更改上述变量的值。

system_variable.png

Sphinx 安装完成后,提供 sphinx-quickstart 工具自动得到 Sphinx 的初始环境和文件目录。详细步骤见 sphinx-quickstart

如何安装 Sphinx,详见官方文档 installing Sphinx

修改上述变量内容后,在后期自动发布生成的HTML和PDF中可以看见上述变量信息。


HTML

自定义变量

除 Sphinx 默认提供的 project information 相关变量外,用户也可以使用 reStructuredText 的替代语法(substitution)语法,随时自定义某些变量。
本文中介绍使用 reStructuredText 替代语法,实现自定义变量。

reStructuredText 替代语法(Substitutions)

reStructuredText 的替代语法,用定义的 |name| 来替代一小段文本或者标记语法。用法如下:

.. |name| replace:: replacement *text*

或者

.. |caution| image:: warning.png
                  :alt: Warning!

利用上述替代语法,就可以实现自定义变量的功能了。

如果希望该变量在所有的文档中生效,则可以在 conf.py 中使用增加以下命令行,传入替代语法,得到 “全局变量”。
例如,笔者的经验中,将产品名称、以及常用的特殊符号unicode编码等在 conf.py 定义,得到变量。之后,在任意项目文档中使用替代文本 |name| 的部分即可。

conf.py中定义“全局变量”

如果只是某个文档中,某一名词反复出现,则可以在当前 .rst 文档中,使用替代语法,得到 “局部变量”。

例如,某个文档中经常出现的某个参数名称,使用替代语法,可以保证书写一致,并便于后期自动修改更新。

替代语法得到“局部变量”

总结

以上就是在使用 Sphinx+reStructuredText 制作技术文档过程中,实现变量功能的经验。

后续介绍 Sphinx+reStructuredText 方案中条件文本 (conditional text)的使用。结合使用变量 (variable)和条件文本(conditional text),不同需求下条件发布就可以实现了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容

  • 这几天准备编排部分翻译的书籍和文档,找了好些工具,最终定格在 Sphinx 上,并基于 ReadTheDocs 提...
    qiwihui阅读 9,253评论 1 10
  • 第五章 文档 Python中 文档格式的事实标准是reStructuredText 简称 reST,是一种轻量级的...
    七天七念阅读 390评论 0 0
  • 序言 由于最近都在忙着写技术文档,所以准备总结一下我所使用的工具、以及所遇到的坑们,包括工具的选择和优缺点之类的个...
    栽生物坑里的信息汪阅读 6,218评论 0 3
  • 昨晚发现二宝虎虎脖子上有个表层有皮屑,底有黑色结块的地方,比较痒,经常抓。问有经验的人,和网上查阅,发现极有可...
    宇虎阅读 167评论 0 1
  • 今天九点醒的,收到了两条祝福。上午出了趟门,我、田婧苒、多多,我们仨扫了辆电单车,快乐了一上午。下午和老爸一起,买...
    春中十一阅读 145评论 0 3