Latex 乳胶束:改变子弹压痕的方法?

Latex 乳胶束:改变子弹压痕的方法?,latex,beamer,Latex,Beamer,我已经查阅了比默课程手册(PDF文件) 我不知道如何将缩进项目符号指定更改为\itemize [这有点重要,因为我使用的是两列幻灯片,我不希望beamer占用太多的水平空间]。beamer只是将管理逐项列出环境布局的责任委托给基本LaTeX包,因此,在Beamer本身中,您不需要做任何奇怪的事情来改变列表的外观/布局 因为Beamer重新定义了itemize、item等,所以处理缩进之类的事情的完全正确的方法是重新定义Beamer模板。我得到的印象是你不想走那么远,但如果不是这样,请告诉我,我会

我已经查阅了比默课程手册(PDF文件)

我不知道如何将缩进项目符号指定更改为\itemize


[这有点重要,因为我使用的是两列幻灯片,我不希望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*}}