Латекс: растягивающиеся фигурные скобки вне математики


Я создаю некоторые слайды латексного бимера (но я думаю, что это не конкретный вопрос бимера как таковой).

У меня есть следующее:

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

Теперь я хочу иметь правую фигурную скобку (т. е."}") за элементами, распространяющимися на issue1 и issue2. И конечно, я хочу написать что-нибудь за этой кудрявой скобкой.

В идеальном мире я бы написал что-то вроде:

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

Это не работает, потому что я не в математической среде, и я не могу поставить весь фрагмент внутри математической среды, потому что itemize не будет работать в этом случае.

Есть ли чистое решение или хак, чтобы получить желаемый результат?

С уважением, Бастиана.

6 16

6 ответов:

Я бы использовал 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}

Путь существует, чтобы иметь дело с предметами которые не имеют одинаковой ширины. Эта правка исходит из ответаЭсултаника .

Результат таков:

текст Alt

боковое Примечание : вы можете удалить все опции remember picture и добавить следующие для автоматического добавления запоминания ко всем изображениям:

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

Вместо этого можно (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

Вот код Джеффа с некоторыми небольшими адаптациями (только для других пользователей 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 (2-й слайд этого кадра):

результат бимера

Адаптации таковы:

  • добавлена команда visible (потому что я думаю, что полезно смешать в скобке позже)
  • сделал элементы более сложными, поэтому использование xshift стало необходимым (я вычислил значение xshift просто путем попытки и ошибки, так что это капля горечи)

Одним из способов обойти это было бы использовать математическую среду, такую как align, поставить точки маркера вручную (с \bullet), а затем использовать ресурсы математической среды для больших фигурных скобок и т. д.

Однажды я сделал нечто подобное. Я позволил списку быть в колонке слева, а в правой колонке я сделал $\right\}$-вещь, чтобы она была такой же высокой, как некоторые \mbox или что-то (что я решил с \vphantom или что-то подобное). К сожалению, у меня нет времени, чтобы выкопать его... У меня на самом деле нет времени, чтобы быть в SO вообще прямо сейчас ;)

Я попробовал свою идею, ниже. Это не работает: к сожалению, все VBOX, созданные средой itemize, имеют ширину \textwidth.

Пользовательский интерфейс моего предложения хорош, и путем переопределения \item должно быть возможно получить элемент vboxes разумной ширины. Или рассчитать разумную ширину для V-образных ящиков, содержащих элементы. Но поскольку функциональные решения уже есть, я больше не буду тратить на это время.

\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}