web-dev-qa-db-ja.com

reStructuredTextの新しいウィンドウでリンクを開きます

ReStucturedTextを使用して新しいウィンドウでリンクを開きたい。これは可能ですか?

これにより、同じウィンドウにリンクが開きます。

You can `check your location here. <http://geoiptool.com>`_
37
JiminyCricket

新しいウィンドウまたはタグでページを開くには、属性target="_blank"をハイパーリンクに追加できますが、reStructuredTextのインラインハイパーリンクに属性を追加する方法はわかりません。ただし、Docutils FAQから ネストされたインラインマークアップが可能です 、たとえば、rawディレクティブを使用して生のHTMLをドキュメントに含めることができます。

You can |location_link|.

.. |location_link| raw:: html

   <a href="http://geoiptool.com" target="_blank">check your location here</a>

コメントに対処するために更新

「なぜreStructuredTextに[素晴らしい機能を挿入]がないのか」という質問がありました。

この場合、「reStructuredTextにリンクの開き方を指定する方法がないのはなぜですか」—リンクをクリックする動作は実際には責任ではないため、reStructuredTextにはこれを行う簡単な方法がないと思います。 reStructuredTextはマークアップを変換します—そのマークアップが最終的にどのように表示されるかは、reStructuredText次第ではなく、ユーザーが使用することを選択したブラウザーまたはビューアー次第です。

Webブラウザーでリンクを開く場合、使いやすさを向上させるために、ユーザーに新しいタブでリンクを開かせないようにする必要があります(これは、target="_blank"の追加が行っていることです)。むしろ、リンクを開く方法の選択はユーザーに任せるべきです。ユーザーが新しいタブでリンクを開きたい場合は、マウスの中ボタン(またはお気に入りのショートカットキー)を使用できます。

したがって、reStructureTextに簡単なtarget="_blank"機能がないことは完全に許容できると思います。 本当にこれをやりたい人にとっては可能であるという事実は良いことであり、そうするのは少し苦痛であるという事実この慣行を思いとどまらせるのに適しています。

34
Chris

私は受け入れられた答えに完全に同意します、特にreStructuredTextがリンクの振る舞いに責任を負わない部分に同意します。

それでも欲しいので、テーマで解決する必要があります。すべての外部リンクを新しいタブで開きたいので、上記のようにそれを行うのは非常に面倒になります。

私の場合、サードパーティのテーマ(sphinx_rtd_theme)を使用し、layout.htmlの終わり近くに次のスクリプトを配置します。

  <script type="text/javascript">
    <!-- Adds target=_blank to external links -->

    $(document).ready(function () {
      $('a[href^="http://"], a[href^="https://"]').not('a[class*=internal]').attr('target', '_blank');
    });
  </script>

それはうまく仕事をしているようです。それが役に立てば幸い。

2
Ivonet

JavaScriptを使用して、外部リンクごとにtarget="_blank"を設定することをお勧めします。

https://github.com/sphinx-doc/sphinx/issues/1634 を参照してください