LaTeX beamer:改变子弹压痕的方法?

时间:2010-04-09 22:10:52

标签: latex beamer

我查看过Beamer Class手册(PDF文件)。

我无法弄清楚如何将缩进项目符号更改为\ itemize。

[这很重要,因为我正在使用2列幻灯片,而且我不希望投影仪偷走太多的水平空间]。

4 个答案:

答案 0 :(得分:56)

Beamer只是将管理itemize环境布局的责任委托给基础LaTeX软件包,因此您无需在Beamer本身做任何时髦的工作来改变列表的外观/布局。

由于Beamer重新定义了逐项,项目等,因此操作缩进等内容的完全正确的方法是重新定义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改变后续行的缩进。

这种方法的优点是你可以在非Beamer LaTeX中拥有列表的所有灵活性。缺点是您必须手动设置项目符号样式(和其他可视元素)(或为您正在使用的模板识别正确的命令)。请注意,如果将第二个参数留空,则不会显示项目符号,您将节省一些水平空间。

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

定义customlist环境

list解决方案的缺点可以通过定义一个新的customlist环境来改善,该环境基本上重新定义了Beamer的itemize环境,但也包含\leftmargin和{{ 1}}(等)参数。在序言中加入以下内容:

\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。默认值分别为2.5em和0em。

\itemindent

答案 1 :(得分:12)

我使用 enumitem 包。然后,您可以在声明列表(枚举,描述,逐项列表)时设置此类边距:

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

当然,该软件包为列表提供了许多其他不错的自定义(使用'label ='来更改项目符号,使用'itemsep ='来更改项目之间的间距,etc...

答案 2 :(得分:7)

为新的项目大小环境设置\itemindent解决了这个问题:

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

答案 3 :(得分:0)

就像 Geoff 的回答一样,我找到了一个我喜欢使用 enumitem 的解决方案。使用 \setlist[⟨names⟩,⟨levels⟩]{⟨keys/values⟩} 设置默认值以继承现有(主题?)属性或使用 \setlist*[⟨names⟩,⟨levels⟩]{⟨keys/values⟩} 完全重置。请参阅enumitem documentation

以下为嵌套列表的前四级设置缩进并显式声明标签。此处的标签默认为分项列表的项目符号和枚举列表的阿拉伯数字。然后重置嵌套列表的默认标签;长连字符用于第二项,单连字符用于第三项等。最后一行将第二级逐项枚举列表的默认标签重置为字母(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={*}]