Латекс: Заставьте \listoffigures быть похожим на \listoftables или \lstlistoflistings

У меня есть список списков в конце моего документа после моего списка таблиц и моего списка чисел. Вещь, которая является действительно раздражающей меня, состоит в том, что они выглядят одинаково кроме списка списков, не оставляет разрыв строки между главами.

У меня был хороший Google вокруг, и у людей задали тот же вопрос, но, кажется, не было ответа.

Состоит в том их любая причина, почему они не выглядят одинаково и она быть сделанными выглядеть краткими?

5
задан Aetius 12 June 2010 в 16:09
поделиться

1 ответ

Причина в том, что вертикальный интервал между главами в списке рисунков (lof) и списке таблиц (lot) добавляется командой \chapter, а для списка листингов (lol) такого положения просто нет.

Как это исправить, немного зависит от класса документа, который вы используете. Если вы используете замечательный класс memoir, крючки для этой цели уже предусмотрены:

\renewcommand{\memchapinfo}[4]{%
  \addtocontents{lol}{\protect\addvspace{10pt}}}

Если ваши списки появляются в приложениях, вам понадобится крючок \memappchapinfo вместо \memchapinfo. (Список доступных хуков приведен в разделе 18.25 руководства memoir)

Если вы не используете memoir, вам обычно нужно подключить команду \@chapter вашего класса. Это может выглядеть, например, так:

\makeatletter
\let\my@chapter\@chapter
\renewcommand*{\@chapter}{%
  \addtocontents{lol}{\protect\addvspace{10pt}}%
  \my@chapter}
\makeatother

Вы можете легко проверить, что используется для генерации lol, проверив файл .lol, соответствующий вашему документу. Если ваш документ, например, base.tex, загляните в base.lol. Вы должны увидеть что-то вроде:

\contentsline {lstlisting}{...}{...}
\contentsline {lstlisting}{...}{...}
\addvspace {10pt}
\contentsline {lstlisting}{...}{...}

Обратите внимание на \addvspace, разделяющий строки содержания разных глав.

Поскольку фактический код, используемый для вставки интервалов между главами, также зависит от класса документа, адаптируйте фактическую команду \addvspace, чтобы она была такой же, как в ваших файлах .lof или .lot.

8
ответ дан 14 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: