如何\item
在 itemize 环境中自定义每个文本(而不是标签)?
我没有看到任何选项enumitem 包。Tex StackExchange 上的其他问题似乎也更关心标签和间距,而不是 in <text>
。\item <text>
我希望我没有错过任何东西。至少对我来说这似乎并不微不足道,但也许我只是在错误的地方寻找......
背景是,我正试图改变投影仪演示中的连字符行为,正如我在这个答案。但是,使用我提出的解决方案,您必须\hy{}
在每个命令后都写上\item
。文本嵌入在此命令中,因此选项before
and after
from 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}%
}
并重命名itemize
会hytemize
导致奇怪的结果。
更新:
我也不想在每个元素文本上写额外的花括号,它应该和以前一样,也就是说,写\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
以接受论点的新环境,因此以下是您尝试过的更改:
引入了
[t]
选项\parbox
。必须制作
\examplecommand
一个\long\def
或者更好的是一个\newcommand
,因为该\item
参数可能包含段落分隔符。\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}