ReadtheDocs管理ドキュメントの使用
11387 ワード
Read the Docsはオンラインドキュメント管理サービスで、さまざまなバージョンの制御システムからドキュメントをインポートすることができます.webhooksを使用すると、コードをコミットするたびにreadthedocsサイトに自動的に構築され、アップロードすることができます.非常に便利です.
一般的に、これはソフトウェアドキュメントを書くことや、チュートリアル、電子書籍を書くことに適しています.いくつかの1、2つの文章に対してはっきり書くことができるのはメモを取ったり、ブログを書いたりすることができますが、シリーズを書くなら、本の形式を書くほうがいいです.もっと美しくて、もっと系統的です.
既存の電子書籍を書く方法には、以下のいくつかの解決策があり、優劣も明らかです.ブログを書いて、散文と一緒に積み上げて、インデックスが不便です. GitHub Wikiは、知識の整理に適していますが、レイアウトは一般的で、表示しにくいです. GitBook、スタイルが悪く、アクセス速度が遅い.
最後にSphinx+GitHub+ReadtheDocsをドキュメント作成ツールとしてロックし、Sphinxでドキュメントを生成し、GitHubでドキュメントを管理し、ReadtheDocsにインポートします.
Sphinx
SphinxはPythonベースのドキュメント生成プロジェクトで、最初はPython公式ドキュメントを生成するために使用されただけで、ツールの完備に伴い、ますます多くの有名なプロジェクトも彼を使ってドキュメントを生成し、彼を使って本を書くことができ、reStructuredTextをドキュメント作成言語として採用したが、モジュールを通じて他のフォーマットをサポートすることもできる.あとでMarkDownフォーマットをサポートする方法を紹介します.
Sphinxのインストール:
このステップではpython依存、忍耐などがインストールされます.
初期化:
以下は私が記入したもので、その他は基本的にデフォルトでいいです.
Separate source and build directories (y/n) [n]:y Project name: scrapy-cookbook Author name(s): Xiong Neng Project version []: 0.2 Project release [1.0]: 0.2.2 Project language [en]: zh_CN
インストールソフトウェアtreeディレクトリツリー構造を表示するには、次の手順に従います.
次に、
記事を追加し、sourceディレクトリの下にhello.rstを新規作成します.内容は次のとおりです.
トピックsphinx_の変更rtd_theme
source/conf.pyを変更します.
プレビュー効果
その後、さらにディレクトリで
img
toctreeは、python.rst、java.rstを別のディレクトリにメモするなど、マルチレベルディレクトリをサポートします.toctreeは、次のように設定します.
真ん中の空行に注意
markdownの作成をサポート
recommonmarkでmarkdownをサポート
次にconf.pyを変更します.
AutoStructify
高度な機能を使用する場合は、AutoStructify構成を追加し、
ネット上には次の詳細な構成があります.https://github.com/rtfd/recommonmark/blob/master/docs/conf.py
その後、先ほどの
GitHubホスティング
一般的な方法は、githubなどのバージョン制御システムにドキュメントを管理し、pushソースコードを自動的に構築してreadthedocに公開することです.これにより、バージョン制御のメリットもあれば、readthedocに自動的に公開することができ、本当に便利です.
GitHubでscrapy-cookbookという倉庫名を作成し、ローカル.gitignoreファイルに
具体的な手順は簡単です.公式ドキュメントを参照してください.https://github.com/rtfd/readthedocs.org: Read the Docsにアカウント を登録ログイン後「Import」をクリック. この文書項目に「scrapy-cook book」などの名前を記入し、GitHub上の工事HTTPSリンクを追加し、倉庫タイプをGit に選択します.他の項目は自分の必要に応じて記入して「Create」をクリックし、作成後に自動的にWebhooksをアクティブにし、GitHub設定 に行く必要はありません.すべてが終わって、それからあなたがこの倉庫のpushコードに行く限り、readthedocの上のドキュメントは自動的に更新されます. 注意:read the docsプロジェクトの作成時に言語選択「Simplified Chinese」
構築中に問題が発生した場合は、readthedocにログインしてプロジェクト内の「構築」ページにアクセスして構築履歴を表示し、詳細ログを表示するには、次のいずれかをクリックします.
img
以前のブログのscrapyに関する記事をreadthedocに移行しましたが、効果を見てみましょう.
img
PDFの生成
まずTeX Liveをインストールします.CentOS 7のyumライブラリのTeX Liveバージョンは古いので、公式サイトのバージョンを直接インストールします.
公式サイトページでインストールパッケージinstall-tl-unx.tar.gzをダウンロード
依存パッケージをインストールする場合は、次の手順に従います.
次に、インストールを解凍します.
インストール時間が長くなりますので、50分ほどかかりますので、お待ちください...
インストール後にPATHを設定し、
上のパスを自分の正しいパスに変更して
中国語PDFを生成するには、東アジア言語パッケージとフォントパッケージがインストールされていることを確認する必要があります.
pdflatexの代わりにXeLaTeXを使用するには、
次に、
完了すると ReadTheDocsは自動的に中国語PDFを生成することができるが、ReadTheDocsサーバのTeXLiveバージョンが古いため、pdflatexしか使用できずxelatexコンパイルが使用できないうえ、サーバ上の中国語フォントの制限が加わるため、生成されたPDFの効果は劣るため、ReadTheDocsで生成されたPDF を採用しない TeXLive 2016をローカルにインストールし、xelatexでコンパイルすることで、より効果的なPDFを生成することができ、現在の戦略はローカルでPDFを生成することである.
繁体字PDFの生成
Openccを先にインストール
ソースコードを変換するshellスクリプトを書きます.
簡体字から繁体字へ
その後、上記のPDF生成手順は変更されません.
FAQ
buildの時にエラーが発生しました:!Package inputenc Error:Unicode char私(U+6211)
解決策は、
WARNING: Pygments lexer name u’python run.py’ is not known
解决策として、コードを书くときに’’’python run.pyというフォーマットを使わないでください.
WARNING: nonlocal image URI found
解決策、conf.pyの変更
生成されたPDFファイルに画像が表示されない問題
解決策は、文章の中で外部のピクチャリンクを参照しているため、ピクチャを表示できないため、ピクチャをsource/imagesディレクトリにダウンロードし、リンクを相対パスに変更します.
画像を中央に表示するには:
タイトル問題の自動生成
修正
画像が文字を上書きする問題
新しい画像は必ず1行空けるという習慣を身につける.
生成されたpdfファイルには、各章に番号が1つ追加されています.
この問題の原因はsphinxがrstをLaTexファイルに変換し、PDFに変換したからだと思います.sphinxで生成されたLaTexファイルでは、Sectionタグ段落が使用されています.デフォルトでは、Sectionは自動番号の章ですが、Section*は自動番号を付けません.
この問題を解決するには、sphinxで生成されたpython 3-cookbook.texを手動で編集する必要があります.
この行のコードは章番号のカウンタを閉じ、生成されたPDFはディレクトリが正しく、章に自動番号が付いていない.中身をむやみに動かさないように気をつけて、空行を削除してもだめです.
次に、コマンドを実行します.
このとき生成されるpdfファイルは通常のフォーマットです.一度実行が成功しなければもう一度実行するのはおかしい.
具体的な原理の説明はhttp://liam0205.me/2015/04/10/how-to-list-unnumbered-section-in-the-table-of-contents/
PDF表示の最適化
この参考https://github.com/yidao620c/python3-cookbook/issues/108
texファイルを編集します.ガイドラインの内容は次のとおりです.
さらに、次のコマンドを実行して、各章の余分なContentsと次の行のスペースを削除します.
生成コマンドを再度実行します(2回実行することが望ましい):
一般的に、これはソフトウェアドキュメントを書くことや、チュートリアル、電子書籍を書くことに適しています.いくつかの1、2つの文章に対してはっきり書くことができるのはメモを取ったり、ブログを書いたりすることができますが、シリーズを書くなら、本の形式を書くほうがいいです.もっと美しくて、もっと系統的です.
既存の電子書籍を書く方法には、以下のいくつかの解決策があり、優劣も明らかです.
最後にSphinx+GitHub+ReadtheDocsをドキュメント作成ツールとしてロックし、Sphinxでドキュメントを生成し、GitHubでドキュメントを管理し、ReadtheDocsにインポートします.
Sphinx
SphinxはPythonベースのドキュメント生成プロジェクトで、最初はPython公式ドキュメントを生成するために使用されただけで、ツールの完備に伴い、ますます多くの有名なプロジェクトも彼を使ってドキュメントを生成し、彼を使って本を書くことができ、reStructuredTextをドキュメント作成言語として採用したが、モジュールを通じて他のフォーマットをサポートすることもできる.あとでMarkDownフォーマットをサポートする方法を紹介します.
Sphinxのインストール:
pip install sphinx sphinx-autobuild sphinx_rtd_theme
このステップではpython依存、忍耐などがインストールされます.
初期化:
#
mkdir -p /root/work/scrapy-cookbook
cd scrapy-cookbook/
#
sphinx-quickstart
以下は私が記入したもので、その他は基本的にデフォルトでいいです.
Separate source and build directories (y/n) [n]:y Project name: scrapy-cookbook Author name(s): Xiong Neng Project version []: 0.2 Project release [1.0]: 0.2.2 Project language [en]: zh_CN
インストールソフトウェアtreeディレクトリツリー構造を表示するには、次の手順に従います.
yum install tree
次に、
tree -C .
を実行して、生成されたsphinx構造を表示します..
├── build
├── make.bat
├── Makefile
└── source
├── conf.py
├── index.rst
├── _static
└── _templates
記事を追加し、sourceディレクトリの下にhello.rstを新規作成します.内容は次のとおりです.
hello,world
=============
index.rst
は以下のように修正された.Contents:
.. toctree::
:maxdepth: 2
hello
トピックsphinx_の変更rtd_theme
source/conf.pyを変更します.
import sphinx_rtd_theme
html_theme = "sphinx_rtd_theme"
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
プレビュー効果
その後、さらにディレクトリで
make html
を実行し、build/html
ディレクトリに入った後、ブラウザでindex.html
を開くimg
toctreeは、python.rst、java.rstを別のディレクトリにメモするなど、マルチレベルディレクトリをサポートします.toctreeは、次のように設定します.
Contents:
.. toctree::
python/python
swift/swift
真ん中の空行に注意
markdownの作成をサポート
recommonmarkでmarkdownをサポート
pip install recommonmark
次にconf.pyを変更します.
from recommonmark.parser import CommonMarkParser
source_parsers = {
'.md': CommonMarkParser,
}
source_suffix = ['.rst', '.md']
AutoStructify
高度な機能を使用する場合は、AutoStructify構成を追加し、
conf.py
に追加します.# At top on conf.py (with other import statements)
import recommonmark
from recommonmark.transform import AutoStructify
# At the bottom of conf.py
def setup(app):
app.add_config_value('recommonmark_config', {
'url_resolver': lambda url: github_doc_root + url,
'auto_toc_tree_section': 'Contents',
}, True)
app.add_transform(AutoStructify)
ネット上には次の詳細な構成があります.https://github.com/rtfd/recommonmark/blob/master/docs/conf.py
その後、先ほどの
hello.rst
を修正し、よく知っているhello.md
で作成します.## hello world
### test markdown
make html
を再度運転した後、効果を見て、前と同じです.GitHubホスティング
一般的な方法は、githubなどのバージョン制御システムにドキュメントを管理し、pushソースコードを自動的に構築してreadthedocに公開することです.これにより、バージョン制御のメリットもあれば、readthedocに自動的に公開することができ、本当に便利です.
GitHubでscrapy-cookbookという倉庫名を作成し、ローカル.gitignoreファイルに
build/
ディレクトリを追加し、git,commitを初期化した後、リモート倉庫を追加します.具体的な手順は簡単です.公式ドキュメントを参照してください.https://github.com/rtfd/readthedocs.org:
構築中に問題が発生した場合は、readthedocにログインしてプロジェクト内の「構築」ページにアクセスして構築履歴を表示し、詳細ログを表示するには、次のいずれかをクリックします.
img
以前のブログのscrapyに関する記事をreadthedocに移行しましたが、効果を見てみましょう.
img
PDFの生成
まずTeX Liveをインストールします.CentOS 7のyumライブラリのTeX Liveバージョンは古いので、公式サイトのバージョンを直接インストールします.
公式サイトページでインストールパッケージinstall-tl-unx.tar.gzをダウンロード
依存パッケージをインストールする場合は、次の手順に従います.
yum install perl-Digest-MD5
次に、インストールを解凍します.
tar zxf install-tl-unx.tar.gz
cd install-tl-*
./install-tl # install-tl-windows on Windows
[... messages omitted ...]
Enter command: i
[... when done, see below for post-install ...]
インストール時間が長くなりますので、50分ほどかかりますので、お待ちください...
インストール後にPATHを設定し、
/etc/profile
の後に追加します.export PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH
上のパスを自分の正しいパスに変更して
source /etc/profile
を実行すればいいことに注意してください.中国語PDFを生成するには、東アジア言語パッケージとフォントパッケージがインストールされていることを確認する必要があります.
yum -y install fontconfig ttmkfdir
# /usr/share fonts fontconfig
# /usr/share/fonts chinese:
cd /usr/share/fonts
mkdir chinese
# chinese :
chmod -R 755 /usr/share/fonts/chinese
# C:/Windows/Fonts chinese
# msyh.ttf msyhbd.ttf simhei.ttf simsun.ttc wqy-microhei.ttc YaHeiConsolas.ttf
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
vi /etc/fonts/fonts.conf
/usr/share/fonts
/usr/share/fonts/chinese
fc-cache
fc-list :zh
pdflatexの代わりにXeLaTeXを使用するには、
conf.py
を変更する必要があります.# : html
latex_engine = 'xelatex'
次に、
make clean
make latexpdf
完了すると
build/latex
ディレクトリに生成されたpdfファイルが見つかります.繁体字PDFの生成
Openccを先にインストール
wget https://github.com/BYVoid/OpenCC/archive/master.zip
unzip master.zip
yum install -y cmake gcc gcc-c++ doxygen
cd OpenCC-master
make && make install
ln -s /usr/lib/libopencc.so.2 /usr/lib64/libopencc.so.2
ソースコードを変換するshellスクリプトを書きます.
#!/bin/bash
#
curdir=`pwd`
file_dir=${curdir}/$1
for f in $(find $file_dir -type f); do
#echo $f
opencc -i "${f}" -o "${f}_"
mv -f "${f}_" "${f}"
done
簡体字から繁体字へ
./stot.sh scrapy-cookbook/source/
その後、上記のPDF生成手順は変更されません.
FAQ
buildの時にエラーが発生しました:!Package inputenc Error:Unicode char私(U+6211)
解決策は、
conf.py
に追加されます.latex_elements={# The paper size ('letterpaper' or 'a4paper').
'papersize':'a4paper',# The font size ('10pt', '11pt' or '12pt').
'pointsize':'12pt','classoptions':',oneside','babel':'',#
'inputenc':'',#
'utf8extra':'',#
# Additional stuff for the LaTeX preamble.
'preamble': r"""
\usepackage{xeCJK}
\usepackage{indentfirst}
\setlength{\parindent}{2em}
\setCJKmainfont{WenQuanYi Micro Hei}
\setCJKmonofont[Scale=0.9]{WenQuanYi Micro Hei Mono}
\setCJKfamilyfont{song}{WenQuanYi Micro Hei}
\setCJKfamilyfont{sf}{WenQuanYi Micro Hei}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
"""}
WARNING: Pygments lexer name u’python run.py’ is not known
解决策として、コードを书くときに’’’python run.pyというフォーマットを使わないでください.
WARNING: nonlocal image URI found
解決策、conf.pyの変更
import sphinx.environment
from docutils.utils import get_source_line
def _warn_node(self, msg, node, **kwargs):
if not msg.startswith('nonlocal image URI found:'):
self._warnfunc(msg, '%s:%s' % get_source_line(node), **kwargs)
sphinx.environment.BuildEnvironment.warn_node = _warn_node
生成されたPDFファイルに画像が表示されない問題
解決策は、文章の中で外部のピクチャリンクを参照しているため、ピクチャを表示できないため、ピクチャをsource/imagesディレクトリにダウンロードし、リンクを相対パスに変更します.
画像を中央に表示するには:
![scrapy ](/images/scrapy.png)
タイトル問題の自動生成
修正
conf.py
manualをhowtoに変更latex_documents = [
(master_doc, 'scrapy-cookbook.tex', u'scrapy-cookbook Documentation',
u'Xiong Neng', 'howto'),
]
画像が文字を上書きする問題
新しい画像は必ず1行空けるという習慣を身につける.
one line
![scrapy ](/images/scrapy.png)
two line
生成されたpdfファイルには、各章に番号が1つ追加されています.
この問題の原因はsphinxがrstをLaTexファイルに変換し、PDFに変換したからだと思います.sphinxで生成されたLaTexファイルでは、Sectionタグ段落が使用されています.デフォルトでは、Sectionは自動番号の章ですが、Section*は自動番号を付けません.
この問題を解決するには、sphinxで生成されたpython 3-cookbook.texを手動で編集する必要があります.
cd build/latex/
vi scrapy-cookbook.tex
\setcounter{tocdepth}{2}
の下に\setcounter{secnumdepth}{-2}
行を追加この行のコードは章番号のカウンタを閉じ、生成されたPDFはディレクトリが正しく、章に自動番号が付いていない.中身をむやみに動かさないように気をつけて、空行を削除してもだめです.
次に、コマンドを実行します.
xelatex scrapy-cookbook.tex
このとき生成されるpdfファイルは通常のフォーマットです.一度実行が成功しなければもう一度実行するのはおかしい.
具体的な原理の説明はhttp://liam0205.me/2015/04/10/how-to-list-unnumbered-section-in-the-table-of-contents/
PDF表示の最適化
この参考https://github.com/yidao620c/python3-cookbook/issues/108
texファイルを編集します.ガイドラインの内容は次のとおりです.
...
\title{《Python Cookbook》 }
\date{Dec 09, 2017}
\release{3.0.0}
\author{ }
ewcommand{\sphinxlogo}{\vbox{}}
\renewcommand{\releasename}{Release}
\makeindex
%
\renewcommand{\contentsname}{}
% section
\usepackage{titlesec}
ewcommand{\sectionbreak}{\clearpage}
% subsection
ewcommand
ormalsecnumdepth{\setcounter{secnumdepth}{2}}
%
ewcommand\specialsecnumdepth{\setcounter{secnumdepth}{-2}}
% toc subsection
ewcommand
ormaltocdepth{
\setcounter{tocdepth}{2}
\addtocontents{toc}{\setcounter{tocdepth}{2}}
}
% toc section
ewcommand\specialtocdepth{
\setcounter{tocdepth}{1}
\addtocontents{toc}{\setcounter{tocdepth}{1}}
}
\begin{document}
\maketitle
\specialsecnumdepth
\specialtocdepth
\renewcommand{\contentsname}{}
\section{ }
\vspace{-36pt}
\sphinxtableofcontents
\phantomsection\label{\detokenize{index::doc}}
\section{ }
\label{\detokenize{copyright::doc}}\label{\detokenize{copyright:copyright}}\label{\detokenize{copyright:python-cookbook-3rd-edition-documentation}}
\begin{DUlineblock}{0em}
\item[] : 《Python Cookbook》3rd Edition
\item[] : David Beazley, Brian K. Jones
...
\section{ : }
の前に挿入
ormaltocdepth
\section{ A}
の前に挿入\specialtocdepth
さらに、次のコマンドを実行して、各章の余分なContentsと次の行のスペースを削除します.
sed -i '/Contents:/,+1 d' python3-cookbook.tex
生成コマンドを再度実行します(2回実行することが望ましい):
xelatex python3-cookbook.tex