2017-02-18 27 views
1

Я строю свою документацию пакета python как HTML и как латексный PDF. Созданный по умолчанию латекс pdf (ручной класс) имеет большое количество пробелов в верхней части оглавления вокруг текста «СОДЕРЖАНИЕ». Я не очень хорошо знаком с латексом, поэтому, когда я смотрю на сгенерированный файл .tex, я не вижу ничего, что подсказывает, как удалить пробелы.Удалить пробел в верхней части sphinx pdflatex оглавление

Я искал вокруг и не мог найти латексное решение, которое сработало. Я также попробовал установить :caption: на toctree на пустую строку, но это фактически удаляет весь TOC и весь мой контент.

Может ли кто-нибудь помочь мне с этим?

whitespace example

+0

См http://tex.stackexchange.com/questions/62125/how-to-remove-top-margin-above-tableofcontents ответа –

+0

я обнаружил, что и не мог заставить его Работа. Я попробую еще раз. – daveydave400

+0

Что такое номер версии Sphinx, который вы используете? – jfbu

ответ

1

поведение по умолчанию Сфинкса для английского языка является использование опции Бьярне в LaTeX пакет fncychap для заголовков глав. Но он также загружает пакет titlesec для общепринятых заголовков заголовков. Он не делает специальное определение главы с titlesec, которые просто собирают определение fncychap и обертывают его в собственные крючки. Во всяком случае, делая историю короткой, мы находим

\[email protected]@mkschap #1->\vspace *{50\[email protected] }{\parindent \[email protected] \raggedright \normalfont \interlinepenalty \@M \DOTIS {#1} \vskip 40\[email protected] } 

в логе и это fncychap определение \@makeschapterhead, как сохраняется titlesec в своем макро \[email protected]@mkschap.

fncychap загружается раньше sphinx.sty, не крюк,

редактировать: фактически 'fncychap' Ключа, значение по умолчанию '\\usepackage[Bjarne]{fncychap}' может служить, чтобы добавить некоторый код, чтобы переопределить настройки fncychap для ипа пронумерованных названий глав. Это не то, что отличается от подхода с 'preamble' ключом ниже, за исключением того, что не нужно было знать об titlesec вмешательстве во все это.

но с недавнего времени Sphinx 1.5 вы можете использовать свой собственный шаблон Jinja для содержания латекса. Из внешнего вида вашего contents который мал, я думаю, что у вас есть старая версия Сфинкса, таким образом, я буду идти на LaTeX взлома вариант что-то вроде этого:

latex_elements = { 
    # The paper size ('letterpaper' or 'a4paper'). 
    # 
    # 'papersize': 'letterpaper', 

    # The font size ('10pt', '11pt' or '12pt'). 
    # 
    # 'pointsize': '10pt', 

    # Additional stuff for the LaTeX preamble. 
    # 
    'preamble': r""" 
\makeatletter 
\def\[email protected]@mkschap #1{\vspace *{10\[email protected] }{\parindent \[email protected] \raggedright 
    \color{blue}% 
    \normalfont \interlinepenalty \@M \DOTIS {#1} \vskip 10\[email protected] }} 
\makeatother 
""", 

    # Latex figure (float) alignment 
    # 
    # 'figure_align': 'htbp', 
} 

я добавил \color{blue} там только для демонстрационных целей , и изменили команды \vspace и \vskip, которые вам нужны.

Изображение показывает, однако, что существует некоторый дополнительный источник вертикального пространства между содержимым и содержимым ООС (он остается даже с \vskip 0\[email protected], но можно сделать \vskip -40\[email protected] ...), но я думаю, что вы находитесь за верхним пространством над содержимым и уже используя только \vspace*{10pt}, он значительно уменьшил (на скриншоте ниже не видно).

enter image description here

+0

забыл сказать, что Sphinx удаляет пробелы поверх * нумерованных заголовков глав. Но TOC выполняется с не пронумерованным названием главы, поэтому Sphinx не меняет начальный вертикальный сдвиг. – jfbu

+0

Удивительная благодарность. Это отлично поработало. Я использую 1.4.9 на данный момент, но если бы я использовал 1.5, я бы просто добавил часть преамбулы, которую вы дали внутри шаблона jinja? У меня возникли проблемы с поиском документации по шаблону джиньи в сфинксе. – daveydave400

+0

Рад, что это сработало ... Jinja templating для LaTeX ненадолго вызвана в конце [латексных документов] (http://www.sphinx-doc.org/en/stable/latex.html) и используемого шаблона по умолчанию (здесь) (https://github.com/sphinx-doc/sphinx/blob/stable/sphinx/templates/latex/content.tex_t). Непосредственно ниже '<% = fncychap%>' вы могли бы позиционировать '\ def \ @ makechapterhead # 1 {... то же самое, что и в моем сообщении ...}'; BTW, я определил источник дополнительного пространства после названия: он находится в '' \ DOTIS' '' fncychap'', который является '' \ renewcommand {\ DOTIS} [1] {\ CTV \ FmTi {# 1} \ par \ nobreak \ vskip 40 \ p @} '' в 'fncychap.sty' для Bjarne. – jfbu

 Смежные вопросы

  • Нет связанных вопросов^_^