Я хотел бы отображать страницы asciidoc с помощью JBake, которые имеют плавающее оглавление в левом фрейме. Однако JBake, по-видимому, поддерживает размещение TOC только вверху файла.
Если я «выпекаю» свой сайт со страницами, которые имеют следующий синтаксис заголовка документа, оглавление будет наверху.
= Software Engineer
John Doe
2019-01-01
:toc: left
:jbake-type: page
:jbake-tags: documentation, manual
:jbake-status: published
...
Однако, если я конвертирую тот же файл с помощью asciidoctor
cli, toc отображается слева, как и ожидалось. Это ограничение JBake или я что-то не так делаю?
:toc: left
не является допустимым вариантом для встроенного asciidoc. Подробности см. в [1].
Однако надежда все же есть, потому что вы можете изменить свою таблицу стилей.
Во-первых, измените свои шаблоны, чтобы добавить классы "toc2 toc-left"
в тег body. Это освобождает место для toc с левой стороны.
Затем скопируйте стили toc2
из исходной таблицы стилей aciidoctor в стиль toc
, скопировав и вставив это в заголовок:
<style>
@media only screen and (min-width:768px){
#toctitle{font-size:1.375em}
#toc.toc{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto; padding-top: 60px;}
#toc.toC#toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc>ul{font-size:.9em;margin-bottom:0}
#toc.toc ul ul{margin-left:0;padding-left:1em}
#toc.toc ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
}
@media only screen and (min-width:1280px){
body.toc2{padding-left:20em;padding-right:0}
#toc.toc{width:20em; padding-top: 60px;}
#toc.toC#toctitle{font-size:1.375em}
#toc.toc>ul{font-size:.95em}
#toc.toc ul ul{padding-left:1.25em}
}
</style>
это должно решить вашу проблему.
[1] https://asciidoctor.org/docs/user-manual/#using-a-toc-with-embeddable-html