我想使用reStucturedText在新窗口中打开一个链接.这可能吗?
这将在同一窗口中打开链接:
You can `check your location here. <http://geoiptool.com>`_
Run Code Online (Sandbox Code Playgroud)
Chr*_*ris 33
要在新窗口或标记中打开页面,您可以将属性添加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>
Run Code Online (Sandbox Code Playgroud)
我有一个问题"为什么reStructuredText没有[ 插入一些很棒的功能 ]".
在这种情况下,"为什么reStructuredText没有办法指定如何打开链接" - 我认为reStructuredText没有一种简单的方法可以做到这一点,因为点击链接的工作方式并不是真正的责任.reStructuredText转换标记 - 最终显示标记的方式不是reStructuredText,而是用户选择使用的浏览器或查看器.
在Web浏览器中打开链接的情况下,良好的可用性练习要求您不要强迫用户在新选项卡中打开链接(这正是添加target="_blank"正在进行的操作).相反,您应该选择如何打开用户的链接.如果用户想要在新选项卡中打开链接,那么他们可以使用鼠标中键(或者他们喜欢的任何快捷键).
所以我认为reStructureText没有一个简单的target="_blank"功能是完全可以接受的.对于那些真正想要做到这一点的人来说,这是可能的,这是很好的事实,这样做有点痛苦的事实对于劝阻这种做法是有好处的.
Rog*_*ton 11
与Ivonet 的回答类似,但不修改主题:
\n首先,安装sphinxcontrib-jquery:
$ pip install sphinxcontrib-jquery\nRun Code Online (Sandbox Code Playgroud)\n然后,按如下方式编辑该conf.py文件:
extensions = [\n \xe2\x80\xa6\n \'sphinxcontrib.jquery\',\n]\n\nhtml_js_files = [\n \'js/custom.js\'\n]\nRun Code Online (Sandbox Code Playgroud)\n最后,将custom.js文件添加到文件夹中_static/js:
$(document).ready(function () {\n $(\'a[href^="http://"], a[href^="https://"]\').not(\'a[class*=internal]\').attr(\'target\', \'_blank\');\n});\nRun Code Online (Sandbox Code Playgroud)\n这个较短的版本现在也适用于 JQuery:
\n$(document).ready(function () {\n $(\'a.external\').attr(\'target\', \'_blank\');\n});\nRun Code Online (Sandbox Code Playgroud)\n
我完全同意接受的答案,尤其是 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>
Run Code Online (Sandbox Code Playgroud)
它似乎可以很好地完成这项工作。希望能帮助到你。