`
tomhibolu
  • 浏览: 1431165 次
文章分类
社区版块
存档分类
最新评论

用Git+Sphinx记笔记?

 
阅读更多

接前面TeX、LaTeX、TeXLive 小结,练习使用Sphinx写点东西:

效果

图1:


图2:


git

Google code 提供Git

只是不清楚什么原因,无论 push 还是 pull 总是失败。(伟大的墙在发挥作用?)

* About to connect() to code.google.com port 443 (#0)
*   Trying 72.14.203.102... * Connection timed out
* Failed connect to code.google.com:443; Connection timed out
* Closing connection #0
* About to connect() to code.google.com port 443 (#0)
*   Trying 72.14.203.102... * Connection reset by peer
* Failed connect to code.google.com:443; Connection reset by peer
* Closing connection #0
error: Failed connect to code.google.com:443; Connection reset by peer while accessing https://code.google.com/p/debao-qt-blogs/info/refs

那就使用 gitorious 了。

sphinx

TeX、LaTeX、TeXLive 小结一文中,是直接修改Sphinx的latex生成器来支持中文的,不过稍后发现,设置项目的配置文件就可以实现了:

  • conf.py

latex_elements = {
        'babel':'',
        'fontpkg':'',
        'inputenc':'',
        'fontenc':'',
        'utf8extra':''
}

latex_docclass = {
        'howto':'ctexart',
        'manual':'ctexrep'
}

只需要添加这两项即可。

尽管如此,Sphinx的latex生成器还是很不成熟,在当前稳定版Sphinx 1.0.8 尚不支持表格的rowspan和colspan。源码仓库中的Sphinx 1.1 开始支持表格的这两个属性,不过rowspan有bug(无法正常工作)。

简单改动一下,凑活一下:

birkenfeld-sphinx-0dc8c4da3ef5

--- a/latex.py
+++ b/latex.py
@@ -730,19 +730,29 @@ class LaTeXTranslator(nodes.NodeVisitor):
     def visit_row(self, node):
         self.table.col = 0
     def depart_row(self, node):
+        for col in range(self.table.col, self.table.colcount):
+            self.body.append(' & ')
         if self.previous_spanning_row == 1:
-            self.previous_spanning_row = 0
+            #self.previous_spanning_row = 0
             self.body.append('\\\\\n')
         else:
             self.body.append('\\\\\\hline\n')
         self.table.rowcount += 1
 
     def visit_entry(self, node):
-        if self.remember_multirow.get(0, 0) > 1:
-            self.body.append(' & ')
+        print "visit_entry:", self.table.rowcount, self.table.col, self.table.c
+        for col in range(self.table.col, self.table.colcount):
+            if self.remember_multirow.get(col, 0) > 1:
+                self.remember_multirow[col] -= 1
+                if self.remember_multirow[col] == 1:
+                    self.previous_spanning_row = 0
+                if self.table.col > 0:
+                    self.body.append(' & ')
+            else:
+                self.table.col = col
+                break
         if self.table.col > 0:
             self.body.append(' & ')
-        self.table.col += 1
         self.context.append('')
         if 'morerows' in node:
             self.body.append(' \multirow{')
@@ -751,10 +761,11 @@ class LaTeXTranslator(nodes.NodeVisitor):
             self.body.append('}{*}{')
             self.context.append('}')
             self.remember_multirow[self.table.col] = node.get('morerows') + 1
+            self.previous_spanning_row = 1
         if 'morecols' in node:
             self.body.append(' \multicolumn{')
             self.body.append(str(node.get('morecols') + 1))
-            if self.table.col == 1:
+            if self.table.col == 0:
                 self.body.append('}{|l|}{')
             else:
                 self.body.append('}{l|}{')
@@ -762,9 +773,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
         if isinstance(node.parent.parent, nodes.thead):
             self.body.append('\\textbf{')
             self.context.append('}')
-        if self.remember_multirow.get(self.table.col + 1, 0) > 1:
-            self.remember_multirow[self.table.col + 1] -= 1
-            self.context.append(' & ')
+        self.table.col += 1
     def depart_entry(self, node):
         self.body.append(self.context.pop()) # header

分享到:
评论

相关推荐

    Sphnix+git+ReadTheDocs写wiki实践笔记记录——ReadTheDocs基本更新

    1. 用编辑器打开需要修改的rst文件,之后保存 2. 进入WIKI的目录下(与make.bat在一级),输入make html 加载完毕后,html即更新。 如果出现以下问题: The 'sphinx-build' command was not found. Make sure you ...

    高级java笔试题-note-demo:Markdown+Pandoc+MarkdownPad2+Github打造传世笔记模板demo

    决定不用word写笔记之后,用的是Windows7,找了许多高手做笔记的相关文章,用到的相关技术有DocBook、reStructuredText、MarkDown、Sphinx、Pandoc。 reStructuredText+Sphinx的组合是不错的选择,可惜...

    alabaster:轻巧,可配置的Sphinx主题。 现在狮身人面像默认!

    它始于第三方主题,至今仍单独维护,但从Sphinx 1.3开始,Alabaster是Sphinx的安装时依赖项,并被选作默认主题。 在 , 和上可以看到有关此主题的实时示例。 有关更多文档,请参阅 。 笔记 您可以通过pip ...

    sphinx-lesson:Sphinx扩展,用于创建CodeRefinery课程

    Sphinx部分可以分为可单独安装和版本控制的Python包,因此我们不需要git子模块。 在markdown中执行代码单元(通过myst_nb )。 由子扩展名组成。 添加sphinx_lesson作为扩展将带来以下这些: sphinx_less

    nbsphinx:用于Jupyter笔记本的Sphinx源解析器

    6. **版本控制友好**: 由于Notebook本身就是JSON格式,因此使用nbsphinx的文档版本控制变得更加简单,可以直接在Git等版本控制系统中跟踪和比较改动。 **使用nbsphinx的步骤** 1. 安装nbsphinx:通过pip安装...

    sphinx-doc-formula

    sphinx-doc-公式 安装文档系统的公式。 笔记 请参阅完整的。 可用状态 安装 Sphinx 包。 用于生成将触发文档构建的状态的宏。 用法示例。 每当 Git 存储库更新时,以下内容将触发 HTML 文档的构建: {% from ...

    Sphinx:游戏解决存储库

    5. **文档**:由Sphinx生成的项目文档,可能包括API参考、用户指南和开发者的内部笔记。 6. **版本控制文件**:如.gitignore,定义了哪些文件不应被Git追踪。 7. **测试**:单元测试和集成测试代码,确保游戏功能的...

    Effective-Robotics-Programming-with-ROS——中文学习笔记

    ### Effective Robotics Programming with ROS —— 中文学习笔记 #### 知识点一:ROS环境配置与准备工作 **1.1 安装ROS Indigo** 在开始深入学习《Effective Robotics Programming with ROS》之前,首先需要搭建...

    pttutorialtest:PT教程实验项目

    PyTorch教程实验 PyTorch教程以sphinx样式... 如果您喜欢用Jupyter编写教程,则可以使用此将笔记本转换为Python文件。 要使用此项目进行测试,请分叉此项目并在本地克隆它: git clone cd pttutorialtest pip insta

    lianxing:学习及生活进行记录

    Python支持使用`docstring`为函数和类添加文档,也可以使用Sphinx生成专业级别的项目文档。 综上所述,"lianxing"项目可能是一个使用Python实现的学习和生活记录工具,涵盖了Python的基础语法、文件操作、数据管理...

    readthedocs

    "TechMind 自我记录"可能指的是个人或团队使用 Read the Docs 来整理和分享他们在 IT 领域的学习笔记或技术理解。 在使用 "readthedocs-master" 这个压缩包时,我们可以假设它包含了一个项目的 Read the Docs 配置...

    汇总自编写的一些python项目代码-MyPythonCode.zip

    - docs/:项目的文档,可能使用Sphinx等工具生成。 - .gitignore:列出不应被Git追踪的文件和目录。 这些内容反映了Python项目的常见组织结构,对于学习Python编程和了解实际项目开发流程是非常有价值的。通过深入...

    Python 开发相关学习资料

    9. **版本控制**:了解Git,学习如何使用Git进行版本管理,是现代开发者的必备技能。 10. **文档编写**:Python社区重视文档,学习如何使用Sphinx或Markdown编写清晰的API文档和用户手册。 在"Python_learn-main...

    lecture-python.myst:迁移到Myst(https的源文件-python source file

    - 版本控制:利用Git进行版本管理,追踪更改历史,方便协作。 - 问题追踪:通过GitHub的Issue功能记录和解决遇到的问题,与社区成员讨论。 - 拉取请求:开发者可以通过提交拉取请求(Pull Request)来提议合并...

    dmtn-189:数据设施规格

    您可以克隆此存储库,并使用Sphinx在本地构建技术说明: git clone https://github.com/lsst-dm/dmtn-189 cd dmtn-189 pip install -r requirements.txt make html 笔记 在Conda环境中, pip install -r ...

    ittn-046:相机纤维

    您可以克隆此存储库,并使用Sphinx在本地构建技术说明: git clone https://github.com/lsst-it/ittn-046 cd ittn-046 pip install -r requirements.txt make html 笔记 在Conda环境中, pip install -r ...

    ts_tma:望远镜安装组件文档

    GitHub存储库: : 构建系统: : 建立本技术说明您可以克隆此存储库,并使用Sphinx在本地构建技术说明: git clone https://github.com/lsst-tstn/ts-tmacd ts-tmapip install -r requirements.txtmake html 笔记在...

    tstn-024:控制系统操作的概念

    : 构建系统: : 建立本技术说明您可以克隆此存储库,并使用Sphinx在本地构建技术说明: git clone https://github.com/lsst-tstn/tstn-024cd tstn-024pip install -r requirements.txtmake html 笔记在Conda环境中...

    altair_viewer-master.zip

    4. **文档**:如果项目包含了文档,可能会有 `docs` 目录,里面可能有 `index.rst` 或 `README.rst` 文件,使用 Sphinx 或其他文档生成工具编写,以便生成 HTML 文档。 5. **示例**:有时,项目会提供 `examples` ...

    Python-ReText简单但强大的Markdown和reStructuredText编辑器

    9. **版本控制集成**:对于习惯于使用Git等版本控制系统管理文档的用户,ReText可以通过插件与之集成,便于跟踪文档更改历史。 ReText的最新版本为`retext-project-retext-705734c`,这个版本可能包含了最新的改进...

Global site tag (gtag.js) - Google Analytics