Sphinx 可以用字符替换令牌吗?
Can Sphinx replace a token with a character?
我正在使用 Sphinx 和 Markdown 编写一些关于纸牌游戏的文档。我正在以这种方式生成西装图像
<style>
red{
color:red;
font-size: 1.25em;
}
black{
color:black;
font-size: 1.25em;
}
</style>
Spades is <black>♠</black>
Hearts is <red>♥</red>
Diamonds is <red>♦</red>
Clubs is <black>♣</black>
这很难阅读(在源代码中)也很难编写。
如果我可以输入一个标记(例如 $spades$
)并将其转换为
,那就简单多了
<black>♠</black>
关于输出。
有谁知道这是否可行,或者是否有人可以建议解决方法?
我通过编写自己的 post 处理器解决了这个问题
我创建了自己的脚本 makehtml,它在源目录中查找文件 postprocess.py
,如果存在,它会运行它
make html
FILE=source/postprocess.py
if [ -f "$FILE" ];
then
python $FILE
fi
然后 post 处理器用 Sphinx 创建的 html 文件中的正确值替换已定义标记的所有实例。
"""Post processor for Sphinx make html."""
import os
TOKENS = {
'$spades$': '<black>♠</black>',
'$hearts$': '<red>♥</red>',
'$diamonds$': '<red>♦</red>',
'$clubs$': '<black>♣</black>',
}
def get_file_list(dir_name, ext=''):
"""Return the list of files in a directory."""
file_list = os.listdir(dir_name)
files = []
for file_path in file_list:
if not ext or file_path.endswith(ext):
files.append(file_path)
sorted_files = sorted(files)
return sorted_files
print('postprocessing started')
build_dir = 'build/html'
files = get_file_list(build_dir, 'html')
for file in files:
updated = False
file_path = os.path.join(build_dir, file)
with open(file_path, 'r') as f_html:
text = f_html.read()
for token, value in TOKENS.items():
if token in text:
text = text.replace(token, value)
updated = True
if updated:
with open(file_path, 'w') as f_html:
f_html.write(text)
print('postprocessing complete')
然后在custom.css
red{
color:red;
font-size: 1.25em;
}
black{
color:black;
font-size: 1.25em;
}
我正在使用 Sphinx 和 Markdown 编写一些关于纸牌游戏的文档。我正在以这种方式生成西装图像
<style>
red{
color:red;
font-size: 1.25em;
}
black{
color:black;
font-size: 1.25em;
}
</style>
Spades is <black>♠</black>
Hearts is <red>♥</red>
Diamonds is <red>♦</red>
Clubs is <black>♣</black>
这很难阅读(在源代码中)也很难编写。
如果我可以输入一个标记(例如 $spades$
)并将其转换为
<black>♠</black>
关于输出。
有谁知道这是否可行,或者是否有人可以建议解决方法?
我通过编写自己的 post 处理器解决了这个问题
我创建了自己的脚本 makehtml,它在源目录中查找文件 postprocess.py
,如果存在,它会运行它
make html
FILE=source/postprocess.py
if [ -f "$FILE" ];
then
python $FILE
fi
然后 post 处理器用 Sphinx 创建的 html 文件中的正确值替换已定义标记的所有实例。
"""Post processor for Sphinx make html."""
import os
TOKENS = {
'$spades$': '<black>♠</black>',
'$hearts$': '<red>♥</red>',
'$diamonds$': '<red>♦</red>',
'$clubs$': '<black>♣</black>',
}
def get_file_list(dir_name, ext=''):
"""Return the list of files in a directory."""
file_list = os.listdir(dir_name)
files = []
for file_path in file_list:
if not ext or file_path.endswith(ext):
files.append(file_path)
sorted_files = sorted(files)
return sorted_files
print('postprocessing started')
build_dir = 'build/html'
files = get_file_list(build_dir, 'html')
for file in files:
updated = False
file_path = os.path.join(build_dir, file)
with open(file_path, 'r') as f_html:
text = f_html.read()
for token, value in TOKENS.items():
if token in text:
text = text.replace(token, value)
updated = True
if updated:
with open(file_path, 'w') as f_html:
f_html.write(text)
print('postprocessing complete')
然后在custom.css
red{
color:red;
font-size: 1.25em;
}
black{
color:black;
font-size: 1.25em;
}