如何在 \itemize 列表之外使用当前 \item 符号?

如何在 \itemize 列表之外使用当前 \item 符号?

假设我有一些 latex 模板(这里使用默认样式)。此模板为环境中的 sbeamer定义了一些特定符号。是否可以使用\itemitemize相同的不使用itemize环境的符号?

我希望它能够独立于正在使用的具体符号工作。例如,beamer使用某种三角箭头符号,而默认article使用项目符号。我希望能够提取当前使用的符号,无论它是什么。

例如

\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{itemize}
    \item Item with symbol.
\end{itemize}
I want to use item symbol again here: SYMBOLHERE
\end{frame}
\end{document}

答案1

简短回答 因为beamer您可以使用 访问符号\usebeamertemplate{itemize item}

长答案 没有答案可以适用于任何类。大多数标准类定义宏\labelitemi,..., \labelitemiv。例如

% article.cls ll 533--358
\newcommand\labelitemi  {\labelitemfont \textbullet}
\newcommand\labelitemii {\labelitemfont \bfseries \textendash}
\newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
\newcommand\labelitemiv {\labelitemfont \textperiodcentered}

或者

% scrartcl.cls ll. 6755--6758
\newcommand*\labelitemi{\usekomafont{labelitemi}{\textbullet}}
\newcommand*\labelitemii{\usekomafont{labelitemii}{\textendash}}
\newcommand*\labelitemiii{\usekomafont{labelitemiii}{\textasteriskcentered}}
\newcommand*\labelitemiv{\usekomafont{labelitemiv}{\textperiodcentered}}

或者

% memoir.cls ll. 4711--4714
\newcommand{\labelitemi}{\textbullet}
\newcommand{\labelitemii}{\normalfont\bfseries \textendash}
\newcommand{\labelitemiii}{\textasteriskcentered}
\newcommand{\labelitemiv}{\textperiodcentered}

当您启动{itemize}环境时,当前计数器深度将转换为小写罗马数字(从iiv),并且相应的\labelitem...宏将用作列表的标签。有了所有这些类,您就可以\labelitem...在文档中使用它们(认为最好在其周围添加一个组,以免字体更改命令执行您不想要的操作)。

beamer然而, 的做法有些不同:计数器深度被转换成字符串(空、或subsubsub),然后itemize XXitem使用相应的 beamer 模板。因此你会发现

% beamerinnerthemedefault.sty ll. 173--175
\defbeamertemplate*{itemize item}{default}{\usebeamerfont*{itemize item}\raise1.25pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}
\defbeamertemplate*{itemize subitem}{default}{\usebeamerfont*{itemize subitem}\raise1.5pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}
\defbeamertemplate*{itemize subsubitem}{default}{\usebeamerfont*{itemize subsubitem}\raise1.5pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}

一个可能的解决方法是在序言中写下以下几行:

\providecommand*{\labelitemi}{\leavevmode\usebeamertemplate{itemize item}}
\providecommand*{\labelitemii}{\leavevmode\usebeamertemplate{itemize subitem}}
\providecommand*{\labelitemiii}{\leavevmode\usebeamertemplate{itemize subsubitem}}

这样,当使用标准类(广义上,也包括memoirKoMa 类)时\provdecommand*,将被简单地忽略,而使用beamer它将给出所需的输出。

相关内容