在reStructuredText中的新窗口中打开一个链接

时间:2012-07-30 07:06:40

标签: restructuredtext

我想使用reStucturedText在新窗口中打开一个链接。这可能吗?

这会在同一窗口中打开链接:

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

4 个答案:

答案 0 :(得分:31)

要在新窗口或标记中打开页面,您可以将属性target="_blank"添加到超链接中,但我不确定如何在reStructuredText中为内联超链接添加属性。但是,从Docutils常见问题解答is nested inline markup possible,您可以使用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"功能是完全可以接受的。对于真正想要做到这一点的人来说这是可能的事情是好的,这样做有点痛苦,这对于劝阻这种做法是有好处的。

答案 1 :(得分:2)

我建议您使用JavaScript为每个外部链接设置target="_blank"

请参阅https://github.com/sphinx-doc/sphinx/issues/1634

答案 2 :(得分:1)

我完全同意接受的答案,尤其是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>

看来做得很好。 希望对您有所帮助。

答案 3 :(得分:1)

如果您不想修改主题,则可以执行Ivonet的操作,但可以使用x=df['Item_Type'].value_counts() item_type_mapping={} item_list=x.index for i in range(0,len(item_list)): item_type_mapping[item_list[i]]=i df['Item_Type']=df['Item_Type'].map(lambda x:item_type_mapping[x]) 文件夹中的custom.js文件,然后将其添加到_static/js像这样:

conf.py

如果这样做,请忽略html_js_files = [ 'js/custom.js' ] 中的html标签:

_static/js/custom.js