Latex 乳胶束:改变子弹压痕的方法?
我已经查阅了比默课程手册(PDF文件) 我不知道如何将缩进项目符号指定更改为\itemizeLatex 乳胶束:改变子弹压痕的方法?,latex,beamer,Latex,Beamer,我已经查阅了比默课程手册(PDF文件) 我不知道如何将缩进项目符号指定更改为\itemize [这有点重要,因为我使用的是两列幻灯片,我不希望beamer占用太多的水平空间]。beamer只是将管理逐项列出环境布局的责任委托给基本LaTeX包,因此,在Beamer本身中,您不需要做任何奇怪的事情来改变列表的外观/布局 因为Beamer重新定义了itemize、item等,所以处理缩进之类的事情的完全正确的方法是重新定义Beamer模板。我得到的印象是你不想走那么远,但如果不是这样,请告诉我,我会
[这有点重要,因为我使用的是两列幻灯片,我不希望beamer占用太多的水平空间]。beamer只是将管理
逐项列出环境布局的责任委托给基本LaTeX包,因此,在Beamer本身中,您不需要做任何奇怪的事情来改变列表的外观/布局
因为Beamer重新定义了itemize、item等,所以处理缩进之类的事情的完全正确的方法是重新定义Beamer模板。我得到的印象是你不想走那么远,但如果不是这样,请告诉我,我会详细说明
至少有三种方法可以在文档中实现您的目标,而不必使用Beamer模板
使用逐项列出
在下面的代码段中,您可以将\itemindent
的值从0em
更改为您喜欢的任何值,包括负值0em
是默认的项目缩进
这种方法的优点是列表的样式是正常的。缺点是,Beamer对itemize
和\item
的重新定义意味着可用于更改列表布局的参数数量有限。对于多行项目,很难获得正确的间距
\begin{itemize}
\setlength{\itemindent}{0em}
\item This is a normally-indented item.
\end{itemize}
使用列表
在下面的代码段中,\list
的第二个参数是要使用的项目符号,第三个参数是要更改的布局参数列表。\leftmargin
参数调整整个列表项及其所有行的缩进\itemindent
更改后续行的缩进
这种方法的优点是,您拥有非Beamer LaTeX中列表的所有灵活性。缺点是您必须手动设置项目符号样式(和其他视觉元素)(或者为正在使用的模板标识正确的命令)。请注意,如果将第二个参数留空,则不会显示任何项目符号,并且会节省一些水平空间
\begin{list}{$\square$}{\leftmargin=1em \itemindent=0em}
\item This item uses the margin and indentation provided above.
\end{list}
定义自定义列表
环境
列表
解决方案的缺点可以通过定义一个新的自定义列表
环境来改善,该环境基本上从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}
使用\setbeamertemplate
的标准光束器机制,可以将自定义项目符号样式合并到自定义列表
解决方案中。(有关更多信息,请参阅TeX Stack Exchange问题的答案。)
或者,可以直接在环境中修改项目符号样式,方法是将\usebeamertemplate{itemize\beameritemnestingprefix item}
替换为您想要使用的任何项目符号样式(例如$\square$
)。我使用包enumitem。然后,您可以在声明列表时设置这些边距(枚举、描述、逐项列出):
当然,该软件包为列表提供了许多其他良好的自定义设置(使用'label='更改项目符号,使用'itemsep='更改项目之间的间距,)为新的项目环境设置\itemsindent
解决了以下问题:
\newenvironment{beameritemize}
{ \begin{itemize}
\setlength{\itemsep}{1.5ex}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\addtolength{\itemindent}{-2em} }
{ \end{itemize} }
像杰夫的回答一样,我找到了一个我喜欢使用enumitem的解决方案。使用\setlist设置默认值[⟨名字⟩,⟨水平⟩]{⟨键/值⟩}
继承现有(主题?)属性或\setlist*[⟨名字⟩,⟨水平⟩]{⟨键/值⟩}代码>以完全重置。请参阅
下面为嵌套列表的前四个级别设置缩进,并显式声明标签。此处的标签默认为项目符号,枚举列表为阿拉伯数字。然后重置嵌套列表的默认标签;长连字符用于第二个项目,单连字符用于第三个项目,等等。最后一行为ets第二级逐项列举列表的默认标签为字母(a、b、c)
使用enumitem,您还可以通过添加选项来声明特定列表的特定标签或间距,例如\begin{itemize}[label={*}]
不幸的是,beamer重新定义了itemize,因此当您使用enumitem时,您会丢失项目符号enumitem将是理想的,但beamer太过侵入性,因此许多设置无法工作。正如@DaveP所说,不幸的是,beamer与enumitem不兼容。据我所知,第二个和第三个解决方案是相同的,只是第二个解决方案允许您设置用于项目的符号样式。我可以在第三个解决方案中的某个地方定义该符号样式吗?我想做的是创建一个自定义列表,定义一次符号样式,然后按照您的建议使用其他两个参数进行操作。此外,我对这个伟大的答案投了赞成票。@Talik3233:我已经更新了用两种修改项目符号样式的方法修改了我的答案。
\newenvironment{beameritemize}
{ \begin{itemize}
\setlength{\itemsep}{1.5ex}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\addtolength{\itemindent}{-2em} }
{ \end{itemize} }
\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*}}