MkDocs插件允许指向索引页的可单击部分

mkdocs-section-index的Python项目详细描述


mkdocs节索引

Pluginfor MkDocs允许指向索引页的可单击部分。在

PyPIGitHubGitHub Workflow Status

pip install mkdocs-section-index

Example

Screencast with comparison

在^{em1}中使用nav$mkdocs.yml公司(或不带nav,但有an equivalent directory structure):

^{pr2}$

borgs人/索引.md页面合并为“Borgs”部分的索引。通常,MkDocs中的部分不能作为页面本身单击,但是这个插件使之成为可能。在

另请参阅:a realistic demo site

主题支持

此插件需要每个主题重写(在插件中实现),或support from themes themselves。在

当前支持的themes包括:

使用说明

上面所示的nav恰好也是省略nav时MkDocs生成的;它检测^{} and ^{}页并自动将它们作为第一项。在

为了使编写这种nav更自然(in YAML there's no better option),考虑使用^{str1}$literate-nav插件;然后上面的nav可以这样写:

* [Frob](index.md)
* [Baz](baz.md)
* [Borgs](borgs/index.md)
    * [Bar](borgs/bar.md)
    * [Foo](borgs/foo.md)

Implementation

“协议”

通常在MkDocs ^{}中,这些项可以是:

  • 一个^{},它有一个title和{}。
    • url总是None
  • 一个^{},它有一个title和{}。
    • title可以省略,稍后根据页面内容推断)
    • ^{}总是None
  • (对我们来说无关紧要)。在

此插件引入了一个hybrid kind of ^{},它具有以下所有属性:

  • titlestr
  • urlstr
  • childrenlist
  • is_page=True
  • is_section=True

这样一个特殊的项被放入nav中,代替一个Section,它有一个Page,它的第一个子元素是一个有意省略的标题。这两者自然地结合成一个特殊的section-page,这是两者的混合体。在

主题实施

然后,主题模板需要做的就是有意义地支持这样的导航项——既有url和{}的导航项。项目应该可以直接点击进入相应的页面,也可以容纳子项目。在

当然,目前的模板并不期望这样的情况;或者如果他们有,那纯粹是偶然的。所以目前这个插件“侵入”了支持主题的模板,patching their source on the fly以满足其需要。希望是,一旦这个插件获得足够的吸引力,主题作者会很乐意直接支持这个场景(这是完全非侵入性和向后兼容的),然后补丁可以被删除。在

“考虑的备选方案”

即使所有的模板补丁都没有了,这个插件仍然是这个特殊的nav“protocol”的实现,以及opt-in机制。作者认为,这种做法是有利的,因为:

  • 这是一个有争议的问题,不能默认启用,甚至不能成为MkDocs的一部分。这是discussed in the past and dropped。主要原因是在MkDocs中,没有要求nav的结构遵循doc文件的实际目录结构。因此,没有一种自然的方法可以从文档的位置推断出文档应该成为节的索引页,即使它的名称是索引.md。虽然如果navomitted & generated,那么是的,这样的假设是可行的。它也适用于绝大多数实际用法withanav,但这没有帮助。在

  • 主题本身也可能不应该直接尝试检测逻辑,比如“如果没有标题,则为节的第一个子项”,并在Jinja模板代码中手动折叠子项,因为这太混乱了。这也不应该启用默认为ed。即使模板也可以选择加入,但像这样的集中化方法可以确保统一地访问这个特性。更不用说模板可能永远不会实现这一点。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在gridlayout中显示2D数组   java spring安全到spring oauth2   设置viewPager时出现java NullPointerException。setCurrentItem   java与Stage的区别是什么。setOnCloseRequest()和运行时。addShutdownHook()?   修复我的类名&Java中的一个方法   java幻数:检查幻数   JavaSpringMVC模拟存储库   jwt如何使用java获取令牌   安卓获得java。util。拉链ZipException:SimpleJavaMail的重复条目   如何使用ssl和证书通过Java向ldap(AD)进行呼叫?   java断言(false)不会停止执行   Websphere级别上的java Log4j为空   java内存不足错误?   java无法打开嵌套项“WEBINF/lib/example”。罐子   压缩的java文件显示为一行   java我应该在recyclerView中使用recyclerView,还是有更好的方法?   java soap web服务如何从xml请求中获取列表   在一起使用Java和Cygwin时需要一些帮助   java图形项目中缺少swing库