Латекс: растягивающиеся фигурные скобки вне математики
Я создаю некоторые слайды латексного бимера (но я думаю, что это не конкретный вопрос бимера как таковой).
У меня есть следующее:
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 ответов:
Я бы использовал
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}
Путь существует, чтобы иметь дело с предметами которые не имеют одинаковой ширины. Эта правка исходит из ответаЭсултаника .
Результат таков:
боковое Примечание : вы можете удалить все опции
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}