LaTeX投影仪:更改项目符号缩进的方法?

LaTeX beamer: way to change the bullet indentation?

我已经检查了Beamer Class手册(PDF文件)。

我不知道如何更改分配给\ itemize的缩进项目符号。

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


Beamer只是将管理itemize环境的布局的职责委派给了基本的LaTeX软件包,因此,在Beamer自身中无需进行任何时髦的更改即可更改列表的外观/布局。

由于Beamer重新定义了itemize,item等,因此操作缩进之类的完全正确方法是重新定义Beamer模板。我得到的印象是您不希望走那么远,但是如果不是这样,请告诉我,我会详细说明。

至少有三种方法可以在文档中实现目标,而不会迷惑Beamer模板。

使用itemize

在以下代码段中,您可以将\\itemindent的值从0em更改为任意值,包括负值。 0em是默认项目缩进。

此方法的优点是列表的样式正常。缺点是Beamer对itemize\\item的重新定义意味着可以操纵以更改列表布局的参数的数量是有限的。要获得多行项目的正确间距可能非常困难。

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

使用list

在下面的代码片段中,\\list的第二个参数是要使用的项目符号,第三个参数是要更改的布局参数的列表。 \\leftmargin参数调整整个列表项及其所有行的缩进; \\itemindent更改后续行的缩进。

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

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

定义customlist环境

可以通过定义一个新的customlist环境来缓解list解决方案的缺点,该环境基本上从Beamer重新定义了itemize环境,但是还合并了\\leftmargin\\itemindent(等)参数。在您的序言中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
\\makeatletter
\
ewenvironment{customlist}[2]{
  \\ifnum\\@itemdepth >2\
elax\\@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。

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

可以使用\\setbeamertemplate的标准Beamer机制将自定义项目符号样式合并到customlist解决方案中。 (有关更多信息,请参见TeX Stack Exchange上此问题的答案。)

另外,也可以直接在环境中修改项目符号样式,方法是将\\usebeamertemplate{itemize \\beameritemnestingprefix item}替换为您要使用的项目符号样式(例如$\\square$)。


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

1
2
3
4
\\begin{itemize}[leftmargin=0cm]
    \\item Foo
    \\item Bar
\\end{itemize
}

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


为新的逐项环境设置\\itemindent可以解决此问题:

1
2
3
4
5
6
7
8
\
ewenvironment{beameritemize}
{ \\begin{itemize}
  \\setlength{\\itemsep}{1.5ex}
  \\setlength{\\parskip}{0pt}
  \\setlength{\\parsep}{0pt}  
  \\addtolength{\\itemindent}{-2em}  }
{ \\end{itemize}
}