以下に、Pythonライブラリ tkPlot3d.py のSphinx対応Markdownドキュメント(myst-parser を使用)と、その設定に必要な conf.py の抜粋を示します。

この構成では、モジュールの概要はMarkdownファイル内に直接記述し、各関数の詳細なドキュメントは sphinx.ext.autodoc 拡張機能を使用してPythonコード内のDocstringから自動的に抽出されます。


Sphinx環境設定 (conf.py の抜粋)

SphinxでMarkdownファイルを処理し、autodoc を利用するためには、conf.py ファイルに以下の設定が必要です。

# conf.py

import os
import sys
# tkPlot3d.py が Sphinx のビルドルートディレクトリの直下にあると仮定します。
# もし別の場所にある場合は、そのパスを適切に追加してください。
sys.path.insert(0, os.path.abspath('.'))

project = 'tkPlot3d'
copyright = 'YYYY, Your Name' # 適切な年に変更してください
author = 'Your Name' # 適切な名前に変更してください

extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.napoleon', # Google/NumPyスタイルのDocstringをサポートする場合に有効にしますが、
                           # 今回のDocstringはreStructuredTextスタイルに近いため必須ではありません。
    'sphinx.ext.viewcode',
    'sphinx.ext.todo',
    'sphinx.ext.intersphinx',
    'myst_parser', # Markdownファイルのサポートを有効にします
]

# Markdownファイルをソースファイルとして認識させるための設定
source_suffix = {
    '.rst': 'restructuredtext',
    '.md': 'markdown',
}

# autodoc の設定
autodoc_default_options = {
    'members': True,
    'undoc-members': True,
    'show-inheritance': True,
    'member-order': 'bysource', # ソースコードに現れる順序でメンバーを並べる
}

# intersphinx の設定 (オプション)
# MatplotlibやNumPyなどの外部ドキュメントへのリンクを生成できるようにします
intersphinx_mapping = {
    'python': ('https://docs.python.org/3', None),
    'numpy': ('https://numpy.org/doc/stable/', None),
    'matplotlib': ('https://matplotlib.org/stable/', None),
    'skimage': ('https://scikit-image.org/docs/stable/', None),
}

html_theme = 'sphinx_rtd_theme' # お好みのテーマを設定してください

作成されるMarkdownドキュメント (tkPlot3d.md)

このファイルは、Sphinxが参照するソースドキュメントとなります。PythonコードのモジュールDocstringは冒頭にMarkdownとして記述され、その後の「API リファレンス」セクションでは py:module ディレクティブを使って、モジュール内のすべての関数ドキュメントを自動的に抽出・表示させます。

# tkPlot3d モジュール

tkPlot3d.py - 3Dプロット関連のユーティリティ関数を提供するモジュール

概要:
    MatplotlibとNumPyを使用して、3Dサーフェス、等値面、散布図、2D等高線プロットなどを描画するための補助関数群を提供します。
    カラーマップの作成や3D軸のスケーリング調整など、多様な3D可視化ニーズに対応します。

詳細説明:
    このモジュールには、3D空間におけるデータの表現を容易にするための複数の関数が含まれています。
    `plot_surface3d` は一般的な3Dサーフェスプロットを扱い、`plot_isosurface3d` は`marching_cubes`アルゴリズムを用いてボリュームデータから等値面を抽出・描画します。
    また、`make_cmap` などの関数は、カスタムカラーマップを生成してプロットの視覚表現を豊かにするために使用できます。
    軸の統一スケール設定やカラーバーの追加など、プロットの見た目を整えるためのユーティリティも含まれています。

関連リンク:
    :doc:`tkPlot3d_usage`

## API リファレンス

以下のセクションでは、`tkPlot3d` モジュール内の各関数について自動生成されたドキュメントを提供します。

::: py:module:: tkPlot3d
    :members:
    :undoc-members:
    :show-inheritance:

説明:

  • モジュール概要: ドキュメントの冒頭には、PythonコードのモジュールDocstringの内容をMarkdown形式で直接記述しています。これにより、モジュール全体の高レベルな情報が最初に表示されます。

  • API リファレンス (py:module ディレクティブ): ::: py:module:: tkPlot3d ディレクティブは、tkPlot3d モジュール全体をSphinxにドキュメント化させる指示です。

    • :members:: モジュール内のすべての公開メンバー(関数、クラスなど)をドキュメントに含めます。

    • :undoc-members:: Docstringがないメンバーもドキュメントに含めます(ただし、推奨されません)。

    • :show-inheritance:: クラスの場合、継承関係を表示します。

    • これらのオプションにより、各関数のDocstring(概要、詳細説明、:param::returns:)はSphinxによって自動的に解析され、整形された形でHTMLドキュメントに表示されます。

  • myst-parser: Markdownファイル内でSphinxのRSTディレクティブ (::: py:module:: など) を使用するために必要です。conf.py で有効化する必要があります。

  • 型ヒントとクロスリファレンス: PythonコードのDocstringに記述されている :param x: (numpy.ndarray) X座標の配列。 のような記述は、autodocintersphinx の設定により、numpy.ndarray のような型名がNumPyの公式ドキュメントへのリンクとして自動的に解決される可能性があります。

この設定とMarkdownファイルを使用することで、Pythonコードの変更なしに、そのDocstringを基にした高品質なSphinxドキュメントをMarkdown形式で生成できます。