LINUX.ORG.RU

Как изменить оформление списка при объявлении макроса?

 ,


0

1

Я курсовые верстаю в LaTeX из-за рамок. Сделал себе стилевой пакет, с макросами для сбора титульников. В титульниках курсового требуется краткое нумерованное оглавление, которое хотелось бы делать нумерованным списком. Проблема в том, что у правильного списка слишком большие промежутки между пунктами, поэтому нужно сделать исключение конкретно в области макроса, который оформляет лист с кратким оглавлением.

Вот такой стилевой файл меняет оформление списка как надо, но ломает абсолютно все остальные списки

\makeatletter
\def\@listI{%
\leftmargin=250pt % просто абсурдное значение для наглядности. По факту проблема с вертикальными отступами.
}
\makeatother

\long\def\trial#1{
	% \begin{titlepage} % сначала думал, что в окружении проблема, но не влияет
		титульник с оглавлением

		#1
	% \end{titlepage}
}

А такой стилевой файл не меняет оформление списка как надо :(

\makeatletter
\def\@listI{%
\leftmargin=250pt % просто абсурдное значение для наглядности. По факту проблема с вертикальными отступами.
}
\makeatother

\long\def\trial#1{
	% \begin{titlepage} % сначала думал, что в окружении проблема, но не влияет
		титульник с оглавлением

		#1
	% \end{titlepage}
}

Минимальный файл, на котором видна проблема

\documentclass[14pt]{report}

\usepackage{extra} % здесь поддержка кириллицы и юникода (\RequirePackage[T1, T2A]{fontenc}\RequirePackage[utf8]{inputenc}\RequirePackage[english,russian]{babel}%)
\usepackage{other} % здесь проблемный макрос


\begin{document}
Другой текст

На несколько абзацев

\trial{
Ненумерованное введение...
\begin{enumerate} % этот должен уезжать вправо
	\item первый в титуле
	\item второй в титуле
\end{enumerate}
}

И после тоже

\begin{enumerate} % а этот должен выглядеть стандартно
	\item первый в теле
	\item второй в теле
\end{enumerate}

\end{document}

Дефы вместо латеховского аналога использую потому что до этого была написана куча кода на дефах и теперь местами при изменении ломается. Короче единообразие.

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

Есть такой пакет enumitem (https://mirror.truenetwork.ru/CTAN/macros/latex/contrib/enumitem/enumitem.pdf), он позволяет как настраивать параметры перечислений в преамбуле, так и указывать их непосредственно в необязательном аргументе окружения enumerate. Для вашего абсурдного примера просто укажите

\begin{enumerate}[left=250pt]
	\item первый в титуле
	\item второй в титуле
\end{enumerate}

И список уедет вправо (только один, остальные не изменятся). За вертикальные пробелы отвечают параметры itemsep=... и parsep=.... Там есть еще масса других опций, почитайте доку.

TeopeTuK ★★★★★
()
Ответ на: комментарий от TeopeTuK

Данный вариант меня не устраивает, потому что тогда мне придётся настраивать каждый список-оглавление. В титульнике мне всегда нужен изменённый стиль списка, отличный от стандартного, поэтому я хочу настроить его в объявлении макроса.

LemeRus
() автор топика
Ответ на: комментарий от LemeRus

Этот же пакет позволяет определять свои собственные окружения-списки с произвольными настройками.

TeopeTuK ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.