乳胶:数学之外的可伸缩花括号

时间:2010-05-05 12:03:49

标签: latex beamer tikz

我正在制作一些乳胶beamer幻灯片(但我认为这本身并不是一个特定的问题)。

我有以下内容:

\begin{itemize}
\item Issue1
\item Issue2
\item Issue3
\end{itemize}

现在,我想在问题1 issue2上传播的项目背后有一个正确的大括号(即'}')。当然,我想在大括号后面写一些东西。

在一个完美的世界里,我会写出类似的东西:

\begin{itemize}
\left .
\item Issue1
\item Issue2
\right \} One and Two are cool
\item Issue3
\end{itemize}

这不起作用,因为我不在数学环境中而且我不能将整个片段放在数学环境中,因为在这种情况下,itemize不起作用。

是否有干净的解决方案或黑客来产生我想要的结果?

此致 巴斯蒂安。

6 个答案:

答案 0 :(得分:21)

我会使用tikz并制作叠加层。

首先包括正确的包(您可能不需要包含tikz,因为这是一个投影仪问题):

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}

然后当你制作清单时,在每个项目之后给出地名:

\begin{itemize}
    \item Issue 1     
        \tikz[remember picture] \node[coordinate,yshift=0.5em] (n1) {}; 
    \item Issue 2
        \tikz[remember picture] \node[coordinate] (n2) {};
    \item Issue 3
\end{itemize}

注意:我将y值向上移动了1/2行,可能会更好。)

因为我们使用了remember picture,所以我们可以在叠加层中引用这些地方:

  \begin{tikzpicture}[overlay,remember picture]
      \path (n2) -| node[coordinate] (n3) {} (n1);
      \draw[thick,decorate,decoration={brace,amplitude=3pt}]
            (n1) -- (n3) node[midway, right=4pt] {One and two are cool};
  \end{tikzpicture}

路径用于处理宽度不同的项目。此修改来自ESultanik's answer

结果是:

alt text

旁注:您可以删除所有remember picture选项并添加以下内容以自动添加记住所有图片:

\tikzstyle{every picture}+=[remember picture]

答案 1 :(得分:11)

您可以(ab)使用表格来代替:

\documentclass{article}
\usepackage{multirow}

\begin{document}

\begin{tabular}{ll}

\textbullet Issue 1 & \multirow{2}{*}{{\LARGE \}} One and Two are cool} \\
\textbullet Issue 2                                                     \\
\textbullet Issue 3                                                     \\

\end{tabular}

\end{document}

产生

删除了死的Imageshack链接

答案 2 :(得分:6)

以下是Geoffs代码,其中包含一些小的适应性(仅适用于其他beamer用户)

\begin{frame}{Example}

\begin{itemize}
\item The long Issue 1
\tikz[remember picture] \node[coordinate,yshift=0.7em] (n1) {}; \\
spanning 2 lines


\item Issue 2
  \tikz[remember picture] \node[coordinate, xshift=1.597cm] (n2) {};
\item Issue 3

\end{itemize}

\visible<2->{
\begin{tikzpicture}[overlay,remember picture]
  \draw[thick,decorate,decoration={brace,amplitude=5pt}]
        (n1) -- (n2) node[midway, right=4pt] {One and two are cool};
\end{tikzpicture}
 } % end visible

\end{frame}

Ressult(那帧的第二张幻灯片):

beamer result

适应性是:

  • 添加了可见命令(因为我认为以后混合括号很有用)
  • 使项目变得更加复杂,因此需要使用 xshift (我只是通过尝试和错误找出xshift值,这样就会产生一点苦味)编辑2018-12-23 :使用this方法可以克服手动尝试错误转移:(n1 -| n2) -- (n2)而不是(n1) -- (n2)

答案 3 :(得分:3)

解决这个问题的一种方法是使用像对齐这样的数学环境,手工放置子弹点(用\ bullet),然后使用数学环境的资源用于大括号等。

答案 4 :(得分:0)

我曾做过类似的事情。我让列表位于左侧的列中,在右侧列中,我执行了$\right\}$ - 这样的事情,因为它与某些\mbox或其他东西一样高(我决定使用{{ 1}}或类似的东西)。不幸的是,我没有时间去挖掘它...我实际上没有时间去做SO;)

答案 5 :(得分:0)

我在下面尝试了我的想法。它不起作用:不幸的是,itemize环境生成的vbox都具有宽度\textwidth

我的建议的用户界面很好,通过重新定义\item,应该可以使项目vbox具有合理的宽度。或者为包含项目的vbox计算合理的宽度。但由于已有功能性解决方案,我不会再花时间在这上面了。

\documentclass{article}

\def\setgrouptext#1{\gdef\grouptext{#1}}
\newenvironment{groupeditems}{\begin{displaymath}\left.\vbox\bgroup\setgrouptext}{%
  \egroup\right\rbrace\hbox{\grouptext}\end{displaymath}}

\begin{document}

\begin{itemize}
\item Line 1
\begin{groupeditems}{Lines 2 and 3 together!}
\item Line 2
\item Line 3
\end{groupeditems}
\item Line 4
\end{itemize}

\end{document}