reStructuredTextのリンクのテキストをフォーマットする


82

reStructuredTextの指定されたリンク内のテキストをどのようにフォーマットしますか?

具体的には、最初から次のHTMLを生成したいと思います。

<a href="http://docs.python.org/library/optparse.html"><tt>optparse.OptionParser</tt> documentation documentation</a>

結果は次のようになります。

optparse.OptionParser ドキュメンテーション

ここで、「optparse.OptionParser」部分は固定幅フォントです。

私は試した

```optparse.OptionParser`` <http://docs.python.org/library/optparse.html>`_

しかし、これは

<tt class="docutils literal">`optparse.OptionParser</tt> documentation &lt;<a class="reference external" href="http://docs.python.org/library/optparse.html">http://docs.python.org/library/optparse.html</a>&gt;`_

このように見えます

`` optparse.OptionParser documentation <http://docs.python.org/library/optparse.html>\_

回答:


93

この構成:

Here you have |optparse.OptionParser|_.

.. |optparse.OptionParser| replace:: ``optparse.OptionParser`` documentation
.. _optparse.OptionParser: http://docs.python.org/library/optparse.html

このHTMLを生成します(いくつかの改行が追加されています):

<p>Here you have 
  <a class="reference external" href="http://docs.python.org/library/optparse.html">
  <tt class="docutils literal"><span class="pre">optparse.OptionParser</span></tt> documentation</a>.
</p>

これはあなたが求めていたものとは正確には一致しないと思いますが、おそらく十分に近いでしょう。http://docutils.sourceforge.net/FAQ.html#is-nested-inline-markup-possibleも参照してください。


2
これは本当に美しいです。これを見つける前に、カスタム拡張機能を作成するなど、あらゆる種類の過剰に設計されたソリューションを検討していました。
狂牛病の物理学者

92
これは本当に美しくはありません。これは恐ろしいです。これは2016年であるため、すべての正常なマークアップ言語はインラインマークアップの無期限のネストをサポートします。文脈自由構文解析は1959年以来簡単に解決されています。(Chomsky:「文法の特定の形式的プロパティについて」)reStructuredTextパーサーが本物のコンテキストを実行できない-無料の構文解析は、他の点ではスターリングファサードのひどい、醜い傷です。明確に定義され、高度に拡張可能なreSTの構文は、より優れた価値があります。(誰かがこれについて気分が悪いはずです。
Cecil Curry

1
そのFAQエントリの「詳細はこちら」リンクは興味深いものです…特に「他の形式のインラインマークアップは、明確であればネストされる可能性があります」。それが起こる唯一の方法は、誰かが明確なケースを処理するパッチセットを作成することを突き刺すだけで、このRSTの「わずかに仕様外の」フレーバーが一般的になり、そこからすべてが雪だるま式に増えるのではないかと思います。 (あるいは、少なくとも私たちはすぐに明確な場合のために良いサポートを得られない場合)
JamesTheAwesomeDude

文書内のリンク(などのためのハイパーリンクとはないため、この作品だけアドバイスされる:ref:
ジェイソンS

6

インタースフィンクスを試しましたか?その拡張機能を使用して、次のマークアップ:

:py:class:`optparse.OptionParser`

このHTMLを生成します:

<a class="reference external" href="http://docs.python.org/2.6/library/optparse.html#optparse.OptionParser" title="(in Python v2.6)"><tt class="xref py py-class docutils literal"><span class="pre">optparse.OptionParser</span></tt></a>

Python2.6およびSphinx1.0.5でテスト済み。


1
ああ、まあ、私はintersphinxについて知りませんでした。おかげで、知っておくのは良いことです。へのリンクoptparseは実際には単なる例です。本当に、任意のURIへのリンクのテキストをフォーマットすることに関心があります。
gotgenes 2011年

4

mzjnによって参照されている同じFAQページから取得:

The "raw" directive can be used to insert raw HTML into HTML output:

Here is some |stuff|.

.. |stuff| raw:: html

   <em>emphasized text containing a
   <a href="http://example.org">hyperlink</a> and
   <tt>inline literals</tt></em>

理論的には、RSTでは実行できない複雑なことを実行できるはずです。


1
これは機能しますが、他のライター(LaTeX、PDFなど)も壊します
Jason S

0

基本的に同等のHTML / CSSを取得したい場合

<span class="red">This is red text</span>

Sphinxを使用したreStructuredTextでは、ロールを作成することでこれを行うことができます。

.. role:: red

次に、次のように使用します。

:red:`This is red text`

目盛りは1つだけにする必要があります `上の行の終わりには、です。もちろん、あなたは持っている必要があります

.red { color: red }

CSSファイルで。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.