Подтвердить что ты не робот

Максимальный уровень вложенности списков в Latex

Есть ли способ увеличить максимальный уровень вложенности списков (перечисление и т.д.) в Latex? Мне нужно пять уровней для класса, а Google ничего не находит...

4b9b3361

Ответ 1

Вам нужно скопировать определения \enumerate и \itemize из файла latex.ltx и изменить код из

  \ifnum \@itemdepth >\[email protected]@\@toodeep\else

к

  \ifnum \@itemdepth >4\@toodeep\else

и вам также нужно будет определить счетчики enumv, последовательность управления \labelitemv и группу других вещей для поддержки глубины 5.

N.B. Если вы хотите сделать это за пределами файла .sty, вам нужно будет окружить свои новые определения

\makeatletter
....
\makeatother

Во всем этом много работы, но если вы привыкли взломать LaTeX, это довольно просто. Если задача кажется слишком большой, и у вас нет времени учиться, вы можете попробовать опубликовать награду здесь или в другом месте: -)

Ответ 2

Решение с использованием пакета enumitem

  • Если у вас нет версии 3 enumitem.sty, тогда загрузите enumitem.sty вручную и поместите его в папку проекта.
  • Для списка элементов списка добавьте следующее в преамбулу документа:
\usepackage{enumitem}
\setlistdepth{9}

\setlist[itemize,1]{label=$\bullet$}
\setlist[itemize,2]{label=$\bullet$}
\setlist[itemize,3]{label=$\bullet$}
\setlist[itemize,4]{label=$\bullet$}
\setlist[itemize,5]{label=$\bullet$}
\setlist[itemize,6]{label=$\bullet$}
\setlist[itemize,7]{label=$\bullet$}
\setlist[itemize,8]{label=$\bullet$}
\setlist[itemize,9]{label=$\bullet$}

\renewlist{itemize}{itemize}{9}

Для других типов списков это должно быть адаптировано.

Справка по устранению неполадок

  • если вы получаете управляющую последовательность "! Undefined.\setlistdepth", версия enumitem.sty, которую использует LaTeX, старше, чем версия 3.
  • если вы все еще получаете "слишком глубоко вложенную" ошибку, тогда команда списка обновления отсутствует для типа списка, который вы используете
  • если вы получите "Ошибка перечисления пакета: Undefined label.", то метка для одного из уровней не была определена с помощью команды \setlist[itemize,$LEVEL] ...

Ответ 3

Вы можете использовать пакет enumitem. После того, что вы просто должны установить нужный уровень глубины:

\usepackage{enumitem}
...
\setlistdepth{9}

И вы можете иметь до 9 вложенных уровней для своих списков, просто: -)

Эта функция доступна в пакете с версии 3.0 (Ubuntu установил меня, например, 2.2). Если у вас есть старая версия, просто замените ее на: http://ctan.mackichan.com/macros/latex/contrib/enumitem/enumitem.sty

Надеюсь, что это поможет!

Ответ 4

Вы также можете просто использовать itemize-environment внутри enumerate-environment.

Ответ 5

IIRC, ограничение ограничено количеством счетчиков перечислений, предоставленных по умолчанию. Мне никогда не приходилось это делать, но вы можете проверить LaTeX Wikibook для некоторых советов. В последний раз, когда мне приходилось серьезно подбирать списки, я в конечном итоге возвращался к использованию прямых макросов TeX, основанных на некоторых материалах в TeX for Impatient.