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

StackOverflow https://stackoverflow.com/questions/2772972

  •  03-10-2019
  •  | 
  •  

Вопрос

Я создаю несколько слайдов latex beamer (но я думаю, что это не специфичный для beamer вопрос как таковой).

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

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

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

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

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

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

Есть ли чистое решение или хак для получения желаемого результата?

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

Это было полезно?

Решение

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

Результатом является:

alt text

Примечание: Вы можете удалить все 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 Ссылка

Вот код 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 (2-й слайд этой рамки):

beamer result

Адапсики:

  • добавил видимый команда (потому что я думаю, что полезно смешаться в скобу позже)
  • сделал предметы более сложными, поэтому использование xshift. стало необходимо (я выяснил значение xshift просто попробовать и ошибку, так что капля горечи) Править 2018-12-23: Ручное переключение попробовать и ошибки можно преодолеть с помощью это Метод: (n1 -| n2) -- (n2) вместо (n1) -- (n2).

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

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

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

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

DocumentClass {Статья}  def  setgroptext # 1 { gdef  groptext {# 1}}  newenvironment {groupeditems} {  begin {displaymath}  fleant.  vbox  bgroup  setgroouptext} {%  enegroup  vant  rbrace  hbox { grotext}  end {displaymath}}  begin {document}  begin {itize}  line 1  begin {groupeditems} {строки 2 и 3 вместе!}  line 2  line 3  end { GroupDitems}  Line 4  End {itemize}  end {документ}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top