如何使用包装器更改 itemize 环境中每个项目的文本(而不是标签)?

如何使用包装器更改 itemize 环境中每个项目的文本(而不是标签)?

如何\item在 itemize 环境中自定义每个文本(而不是标签)?

我没有看到任何选项enumitem 包。Tex StackExchange 上的其他问题似乎也更关心标签和间距,而不是 in <text>\item <text>我希望我没有错过任何东西。至少对我来说这似乎并不微不足道,但也许我只是在错误的地方寻找......

背景是,我正试图改变投影仪演示中的连字符行为,正如我在这个答案。但是,使用我提出的解决方案,您必须\hy{}在每个命令后都写上\item。文本嵌入在此命令中,因此选项beforeand afterfrom enumitem 似乎对我不起作用。

有没有办法让这变得更容易一些?

例如,这里的所有商品

\documentclass{beamer}
\def\examplecommand#1{\parbox{\linewidth}{#1}}
\begin{document}
    \begin{frame}{}
        \begin{itemize}
            \item \examplecommand{I do not want to be wrapped each time}
            \item \examplecommand{I do not want to be wrapped each time}
            \item \examplecommand{I do not want to be wrapped each time}
            \item \examplecommand{I do not want to be wrapped each time}
        \end{itemize}
    \end{frame}
\end{document}

应该只写成:

\item I do not want to be wrapped each time

没有多余的\examplecommand{…}。当然,用新命令代替\item或用新环境代替itemize也是可能的。我只是不想有那么多冗余。

我尝试过类似,但添加

\newenvironment{hytemize}{%
\let\olditem\item%
\renewcommand\item[2][]{\olditem ##1 \examplecommand{##2}}%
\begin{itemize}}{\end{itemize}%
}

并重命名itemizehytemize导致奇怪的结果。

更新:

我也不想在每个元素文本上写额外的花括号,它应该和以前一样,也就是说,写\item ...就足够了。我提出请求的背景确实是要重新启用 beamer 的连字符,但我也对一个通用的解决方案感兴趣,即在 之后更改文本\item,这样作者就不必担心这种变化,例如,通过写花括号而不是无花括号。

更新 2:

这条评论终于回答了我的更新。

答案1

我感觉你通过将\item指令的参数放在 a 中真正想要实现的\parbox是重新启用连字。如果这个印象是正确的,即如果主要目标与连字有关,那么有一个更简单的解决方案:加载包并在(或)之后立即ragged2e发出指令。\RaggedRight\begin{itemize}\begin{enumerate}

在此处输入图片描述

\documentclass{beamer}
\usepackage[ngerman]{babel}
\usepackage{ragged2e}
\begin{document}

\begin{frame}[t]
\begin{itemize} \RaggedRight
\item Speicherverwaltungsadressen 
      Donaudampfschifffahrtsgesellschaftsmitarbeiters
      Rechtsschutzversicherungsgesellschaftsvertrag
      sechshundertsechsundsechzigtausendzweihundertsiebenundachzig 
\end{itemize}
\end{frame}
\end{document}

答案2

这样可以吗?我刚刚定义了一个新命令。

\documentclass{beamer}

\def\examplecommand#1{\parbox{\linewidth}{#1}}
\newcommand{\newitem}[1]{\item \examplecommand{#1}}

\begin{document}
    \begin{frame}{}
        \begin{itemize}
            \newitem{I do not want to be wrapped each time}
            \newitem{I do not want to be wrapped each time}
            \newitem{I do not want to be wrapped each time}
            \newitem{I do not want to be wrapped each time}
        \end{itemize}
    \end{frame}
\end{document}

答案3

我完全同意 David 和 Mico 关于引入连字符的更好方法的观点。但由于您也表示有兴趣创建一个重新定义\item以接受论点的新环境,因此以下是您尝试过的更改:

  1. 引入了[t]选项\parbox

  2. 必须制作\examplecommand一个\long\def或者更好的是一个\newcommand,因为该\item参数可能包含段落分隔符。

  3. \item进入后重新定义itemize

妇女权利委员会:

\documentclass{beamer}
\long\def\examplecommand#1{\parbox[t]{\linewidth}{#1}}
\newenvironment{hytemize}{%
\let\olditem\item%
\begin{itemize}\renewcommand\item[2][]{\olditem ##1 \examplecommand{##2}}}{\end{itemize}%
}
\begin{document}
    \begin{frame}{}
        \begin{hytemize}
            \item {I do not want to be wrapped each time. This should be longer 
  than one line

  In addition, it can be two paragraphs.}
            \item {I do not want to be wrapped each time}
            \item {I do not want to be wrapped each time}
            \item {I do not want to be wrapped each time}
        \end{hytemize}
    \end{frame}
\end{document}

在此处输入图片描述

相关内容