首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过readthedocs构建中的脚本修改用斯芬克斯构建的文档

如何通过readthedocs构建中的脚本修改用斯芬克斯构建的文档
EN

Stack Overflow用户
提问于 2022-08-23 00:22:24
回答 1查看 115关注 0票数 1

我正在尝试运行一个脚本来修改由Read托管的sphinx构建的文档(因为有些链接没有得到正确的处理)。当我试图在本地构建脚本时,脚本可以工作,但在读取文档生成时失败,或者更改不会传播到网站。

我试图运行的脚本非常简单,它替换了一些没有被sphinx标记表正确转换的html链接:

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash
# fix_table_links.sh
FILE="_build/html/api_reference.html"
if [[ "$1" != "" ]]; then
  FILE="$1"
fi
sed -E 's/a href="(.*)\.md"/a href="\1\.html"/g' -i ${FILE}

我的readthedocs.yml看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
# Required
version: 2

# Build documentation in the docs/ directory with Sphinx
sphinx:
  configuration: docs/conf.py

# Optionally build your docs in additional formats such as PDF and ePub
formats: all

# Optionally set the version of Python and requirements required to build your docs
python:
  install:
    - requirements: docs/requirements.readthedocs.txt

build:
  os: ubuntu-20.04
  tools:
    python: "3.8"
  jobs:
    post_build:
      - echo "Running post-build commands."
      - bash docs/fix_table_links.sh _readthedocs/html/api_reference.html

有两种情况:

案例1)使用readthedocs.yml,构建失败,因为_readthedocs/html/api_reference.html不存在,尽管这个目录是文档声明将从这里上传的地方。此运行的一个示例失败是这里

Case 2)如果我将readthedocs.yml的最终结果更改为bash docs/fix_table_links.sh docs/_build/html/api_reference.html,那么构建就会通过(例如这里)。但是这些链接并没有在rather站点上更新:它们仍然指向标记页面,而不是相应的HTML页面,所以它不能是上传到Read网站的版本。

仔细阅读文档,我不知道如何做到这一点。以前是否有人这样做过,或者更好地掌握了文档构建工作的读取方式?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-09-04 16:22:41

如果您愿意将脚本重写为Python函数,那么通过将脚本作为事件的事件处理程序进行连接,可以非常容易地做到这一点。

我做了一些类似的在我自己的一次回复中,除了我后处理一个.rst文件。它实际上并没有在RTD上使用,但我可以看到它在构建日志中有效。因此,它也可以对HTML文件进行后置处理,因为build-finished事件将在生成后发生。

首先,将脚本定义为conf.py中的一个函数。它需要有appexception作为参数。

代码语言:javascript
运行
AI代码解释
复制
def replace_html_links(app, exception):
    with open(FILE, 'r') as f:
        html = f.read()
    # stuff to edit and save the html

然后定义或添加到setup函数中:

代码语言:javascript
运行
AI代码解释
复制
def setup(app):
    app.connect('build-finished', replace_html_links)

就这样!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73455350

复制
相关文章
RestEasy 默认 http 返回头部没有Content-Length
没有content - length 字段 因为要对方是http长连接,需要根据长度获取包体,性能好一些。 长连接有沾包的问题,要用Content-length切割body
MickyInvQ
2020/09/27
1.2K0
RestEasy 默认 http 返回头部没有Content-Length
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
23.6K0
【AngularJS】 # AngularJS入门
mysql中length函数_length中文
归纳: 应用场景 1.查询字符串长度length(str) 2.查询列最大字符串长度max(length(str)) 3.查询某个字符出现几次 length(str1)-length(replace(‘str1’,’str2’,”)) 4.length求得是字符长度。 【1个中文、英文字母、数字、中文符号、英文符号、全角符号、空格都算1个字符】
全栈程序员站长
2022/08/18
2.6K0
mysql中length函数_length中文
push is not a function data.length返回undefined解决方案-Javascript学习笔记
于是我尝试使用length看能不能获取他的长度然后循环放入其他变量再赋值回去能否解决,竟然length也获取不到长度
田小檬
2023/08/24
4040
string的length方法(数组length方法)
The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property
全栈程序员站长
2022/07/25
9040
TypeError: object()
对于上面这个错误,很容易迷惑我们,因为这个错误信息没有很明确的指出,到底是哪段代码除了问题。那这个错误是怎么产生的了,请听我细细道来。
py3study
2020/01/06
1.1K0
LENGTH 和 CHAR_LENGTH 的区别
char(N) 和 varchar(N) 这里的N指的是字符长度,而不是字节长度。就是说可以插入N个字符的长度的内容(不管插入的是英文还是中文,反正是按照长度算的)。
保持热爱奔赴山海
2019/09/18
1.1K0
Python报错TypeError: '<' not supported between instances of 'str' and 'int'
分析:input()返回的数据类型是str,不能直接和整数进行比较,必须先把str换成整数,使用int()方法
BH8ANK
2021/01/28
5K0
【AngularJS】—— 1 初识AngularJs
怀着激动与忐忑的心情,开始了学习AngularJS的旅程,很久之前就听说了这个前端框架,但是由于自己一直没有从事相关的工作,因此也没有进行学习。这次正好学习AngularJS,直接复习一下前端的知识。目前这里还是弱点,慢慢深入的学习。   AngularJS是Google的优秀的前端框架,目前已经应用于多个产品。   通过w3cschool.cc的学习,简单的了解了下它的使用方法,但是对于原理还没有理解。   AngularJs相对于其他的框架来说,有一下的特性:   1 MVVM   2 模块化
用户1154259
2018/01/17
2.8K0
关于Java中length、length()、size()的区别
@return the length of the sequence of characters represented by this object.
全栈程序员站长
2022/07/01
1.1K0
SQL函数 LENGTH
LENGTH 返回一个整数,表示给定字符串表达式的字符数,而不是字节数。字符串表达式可以是字符串(从中删除尾随空格)或数字( IRIS 将其转换为规范形式)。
用户7741497
2022/04/08
2K0
【AngularJS】—— 2 初识AngularJs(续)
前一篇了解了AngularJS的一些简单的使用,这里继续跟着w3c学习一下剩下的内容。   本篇根据w3cschool.cc继续学习AngularJS剩余的内容,包括:   1 事件   2 模块   3 表单   4 数据验证   5 bootstrap CSS风格   6 include包含其他页面   7 应用程序   8 参考手册   首先看一下html的事件   关于html的事件,文中给出了三个例子,点击、隐藏、显示。使用方法基本相同:   先看一下点击的例子,点击按钮后,会触发ng-clic
用户1154259
2018/01/17
2.3K0
python:TypeError: mu
 今天遇到这个错误: Traceback (most recent call last):   File "t2.py", line 14, in <module>     print Derived().meth()   File "t2.py", line 10, in meth     super(Derived,self).meth() TypeError: must be type, not classobj 试验代码如下: class Base():     def meth(self):   
py3study
2020/01/07
6170
JavaScript对象length
前几日有在Javascript数组操作一文中稍提及了数组的length属性;深入一点探究,就发现JS这length确有许多难为所知的特性。这就边学边探究下这朵奇葩属性;这里边深入边记载。 可变的数组length属性 和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面
晚晴幽草轩轩主
2018/03/27
2.6K0
SQL函数 $LENGTH
$LENGTH 返回指定字符串中的字符数或指定字符串中的子字符串数,具体取决于使用的参数。
用户7741497
2022/03/25
1.8K0
Length of Last Word
1. Description 2. Solution class Solution { public: int lengthOfLastWord(string s) { int
Tyan
2019/05/25
1K0
Length of Last Word
问题:最后一个单词的长度 分析,注意s=" a  b  "这种情况,从后遍历单词,遇到空格退出 class Solution { public: int lengthOfLastWord(const char *s) { int len=strlen(s); int sum=0; while(s[len-1]==' ') len--; for(int i=len-1;i>=0;i--) { if(
用户1624346
2018/04/17
1.2K0
TypeError: Network request failed
在使用react-native 进行网络请求时,报了这样的一个错误TypeError: Network request failed, 在检查自己代码没有错误的情况下,去设置一个xCode便可以走通,
杭州前端工程师
2018/06/15
3.3K0
点击加载更多

相似问题

从solaris移植到linux?

10

将shell脚本从Solaris移植到Linux

13

将应用程序从Solaris移植到Linux

44

将代码从Linux移植到Windows

23

将代码从Linux移植到MinGW

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档