LaTeX Beamer: как изменить отступ пули?

Я проверил руководство по Beamer Class (PDF-файл).

Я не могу понять, как изменить маркер отступа, назначенный \ itemize.

[Это отчасти важно, поскольку я использую слайды с двумя столбцами, и я не хочу, чтобы проектор занимал слишком много горизонтального пространства].


person anon    schedule 09.04.2010    source источник


Ответы (4)


Beamer просто делегирует ответственность за управление компоновкой itemize сред обратно базовым пакетам LaTeX, так что вам не нужно делать ничего необычного в самом Beamer, чтобы изменить внешний вид / макет ваших списков.

Поскольку Beamer переопределяет itemize, item и т. Д., Полностью правильный способ манипулировать такими вещами, как отступы, - это переопределить шаблоны Beamer. У меня сложилось впечатление, что вы не собираетесь заходить так далеко, но если это не так, дайте мне знать, и я уточню.

Есть как минимум три способа достижения вашей цели из документа, не беспокоясь о шаблонах Beamer.

С itemize

В следующем фрагменте кода вы можете изменить значение \itemindent с 0em на любое, что вам нравится, включая отрицательные значения. 0em - отступ элемента по умолчанию.

Преимущество этого метода в том, что список оформлен в обычном стиле. Недостатком является то, что переопределение Beamer itemize и \item означает, что количество параметров, которыми можно управлять для изменения макета списка, ограничено. При использовании многострочных элементов может быть очень сложно установить правильный интервал.

\begin{itemize}
  \setlength{\itemindent}{0em}
  \item This is a normally-indented item.
\end{itemize}

С list

В следующем фрагменте кода второй параметр \list - это маркер, который следует использовать, а третий параметр - это список параметров макета, которые необходимо изменить. Параметр \leftmargin регулирует отступ всего элемента списка и всех его строк; \itemindent изменяет отступ последующих строк.

Преимущество этого метода в том, что у вас есть вся гибкость списков в LaTeX, отличном от Beamer. Недостатком является то, что вам нужно настроить стиль маркера (и другие визуальные элементы) вручную (или определить правильную команду для используемого вами шаблона). Обратите внимание: если вы оставите второй аргумент пустым, маркеры отображаться не будут, и вы сэкономите немного места по горизонтали.

\begin{list}{$\square$}{\leftmargin=1em \itemindent=0em}
  \item This item uses the margin and indentation provided above.
\end{list}

Определение customlist среды

Недостатки решения list можно исправить, определив новую среду customlist, которая в основном переопределяет среду itemize из Beamer, но также включает параметры \leftmargin и \itemindent (и т. Д.). В преамбуле укажите следующее:

\makeatletter
\newenvironment{customlist}[2]{
  \ifnum\@itemdepth >2\relax\@toodeep\else
      \advance\@itemdepth\@ne%
      \beamer@computepref\@itemdepth%
      \usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
      \usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
      \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
      \begin{list}
        {
            \usebeamertemplate{itemize \beameritemnestingprefix item}
        }
        { \leftmargin=#1 \itemindent=#2
            \def\makelabel##1{%
              {%  
                  \hss\llap{{%
                    \usebeamerfont*{itemize \beameritemnestingprefix item}%
                        \usebeamercolor[fg]{itemize \beameritemnestingprefix item}##1}}%
              }%  
            }%  
        }
  \fi
}
{
  \end{list}
  \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body end}%
}
\makeatother

Теперь, чтобы использовать детализированный список с настраиваемым отступом, вы можете использовать следующую среду. Первый аргумент предназначен для \leftmargin, а второй - для \itemindent. Значения по умолчанию - 2.5em и 0em соответственно.

\begin{customlist}{2.5em}{0em}
   \item Any normal item can go here.
\end{customlist}

Пользовательский стиль маркера может быть включен в решение customlist, используя стандартный механизм Beamer \setbeamertemplate. (См. Ответы на этот вопрос на TeX Stack Exchange, чтобы узнать больше Информация.)

В качестве альтернативы, стиль маркера можно просто изменить непосредственно в среде, заменив \usebeamertemplate{itemize \beameritemnestingprefix item} любым стилем маркера, который вы хотите использовать (например, $\square$).

person RTBarnard    schedule 10.04.2010
comment
Насколько я понимаю, 2-е и 3-е решения одинаковы, за исключением того, что 2-е решение позволяет вам установить стиль символа, используемого для элемента. Могу ли я где-нибудь в третьем решении определить этот стиль символа? Что я хотел бы сделать, так это создать собственный список, определить стиль символа на этот раз, а затем просто работать с двумя другими параметрами, как вы предложили. Кроме того, поддержал этот отличный ответ. - person User878239; 14.07.2019
comment
@ Talik3233: Я обновил свой ответ двумя способами изменения стиля маркера. - person RTBarnard; 16.07.2019

Я использую пакет enumitem. Затем вы можете установить такие поля при объявлении своих списков (перечисление, описание, разбивка по элементам):

\begin{itemize}[leftmargin=0cm]
    \item Foo
    \item Bar
\end{itemize}

Естественно, пакет предоставляет множество других приятных настроек для списков (используйте 'label =', чтобы изменить маркер, используйте 'itemsep =', чтобы изменить интервал между элементами, и т. д ...)

person Geoff    schedule 10.04.2010
comment
К сожалению, beamer переопределил itemize, поэтому при использовании enumitem вы теряете символы маркера - person DaveP; 20.05.2014
comment
enumitem был бы идеальным, но Beamer слишком навязчив, поэтому многие настройки не работают. - person Peter Flynn; 14.02.2018
comment
Как сказал @DaveP, к сожалению, beamer несовместим с enumitem - person JavAlex; 05.01.2019

Установка \itemindent для нового окружения элементов решает проблему:

\newenvironment{beameritemize}
{ \begin{itemize}
  \setlength{\itemsep}{1.5ex}
  \setlength{\parskip}{0pt}
  \setlength{\parsep}{0pt}   
  \addtolength{\itemindent}{-2em}  }
{ \end{itemize} } 
person Gergely    schedule 24.03.2015

Как и ответ Джеффа, я нашел решение, которое мне нравится, используя enumitem. Установите значения по умолчанию с \setlist[⟨names⟩,⟨levels⟩]{⟨keys/values⟩} для наследования существующих (темы?) Атрибутов или \setlist*[⟨names⟩,⟨levels⟩]{⟨keys/values⟩} для полного сброса. См. документацию по перечислению.

Следующее устанавливает отступ для первых четырех уровней вложенных списков, а также явно объявляет метки. Ярлыки здесь по умолчанию - маркеры для постатейных списков и арабские числа для нумерованных списков. Затем он сбрасывает метки по умолчанию для вложенных списков; длинный дефис для 2-го элемента, одинарный дефис для 3-го элемента и т. д. Последняя строка сбрасывает метку по умолчанию для пронумерованных списков 2-го уровня на алфавитную (a, b, c).

\usepackage{enumitem}
\setlist[1]{leftmargin=0em}
\setlist[2]{leftmargin=2em} %list within a list
\setlist[3]{leftmargin=2.5em} %list within a list within a list
\setlist[4]{leftmargin=3em}
\setlist[itemize]{label=\textbullet}
\setlist[itemize,2]{label={--}}
\setlist[itemize,3]{label={-}}
\setlist[itemize,4]{label={\textperiodcentered}}
\setlist[enumerate]{label={\arabic*}}
\setlist[enumerate,2]{label={\alph*}}

С помощью enumitem вы также можете объявить конкретную метку или интервал для определенного списка, добавив параметры, например. \begin{itemize}[label={*}].

person T. Zack Crawford    schedule 13.04.2021