2016-06-21 35 views
4

我从包含的ReadtheDocs主题切换到我的项目的靴子联合主题。我为此主题做了pip install mkdocs-bootswatch,并在我的mkdocs.yml文件中将theme: readthedocs更改为theme: united我可以在readthedocs.org上使用MkDocs的外部主题吗?

但是,虽然项目在“读取文档”中成功构建,但文档仍保留标准的readthedocs主题。当我在本地运行它时(使用mkdocs serve),它在United主题中显示正确。

是否有另一行代码我应该调整某处?我应该添加一个需求文件?我如何才能让外部主题正确显示在ReadtheDocs中......或者甚至可以在readthedocs.org上使用外部主题?

注:我确实问过MkDocs的人,他们说这是一个ReadTheDocs的限制,所以如果有什么要做,似乎它将是一个ReadTheDocs相关的解决方案。否则,我可能不得不切换到GitHub页面或类似的东西。

回答

4

我看了一下ReadtheDocs source code,看来他们实际上覆盖了你的设置配置并强制他们自己的模板。据我了解,他们这样做是因为他们注入JavaScript和导航的东西具体到ReadtheDocs到您的网页和通过使用已知的主题,他们可以确保注射完成正确。也就是说,不应该有任何技术上的原因,为什么你不能使用相同的HTML作为readthedocs主题,但也许不同的CSS来改变页面的外观/样式。它只是ReadtheDocs似乎不明确支持这一点。

这就是说,我确实注意到模板覆盖只发生在if 'theme_dir' not in user_config and self.use_theme。这给你两条可能的路径来避免覆盖。请注意,不能保证注入的东西能够正常工作,因此请谨慎行事。

  1. theme_dir是Mkdocs setting。不要将MkDocs主题作为单独的Python库安装,您可以将主题文件复制到docs_dir旁边的目录中,然后将theme_dir设置指向它。请确保设置theme: null,以便MkDocs只使用theme_dir

    也许作为一个不那么积极的方法,你可以设置theme: readthedocs,然后使用theme_dir只提供自己的CSS文件,它将覆盖/替换由内置的readthedocs主题提供的CSS。这应该不会对ReadTheDocs注射产生敌意,并且给你一个你喜欢的样子。但是,这可能需要更多的工作才能正确使用,因为您仅限于现有主题的HTML,并且需要编写自己的CSS(不使用已经构建的主题)。

    对于这个问题,您可以将theme设置为您想要的任何主题,然后将theme_dir指向一个空目录。看来ReadtheDocs只检查设置了theme_dir,并且不关心目录中实际存在的内容。

    注:我还没有测试过任何这些建议,不能确定它们会工作。因人而异。

    另一方面,MkdDocs关于如何工作的文档(themetheme_dir设置之间的交互)现在严重缺乏。但是,当下一版本的MkDocs(0.16)发布时,最近的一些additions将会生效。

  2. use_theme似乎是特定于readthedocs和hardcoded内部。我的猜测是,这不会被用户覆盖。需要对代码进行更深入的调查,以确定它提供的选项(如果有的话)。

相关问题