在文本中,我想通过在左侧边缘放置一个花括号来强调一两个段落,并在其旁边垂直放置一些围绕花括号中心的短文本。
问题在正文旁边添加大括号演示如何在正文中添加括号,也许这可以作为起点?对已接受的答案进行了轻微的修改
\documentclass{report}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\noindent$\left\{
\begin{minipage}{\textwidth}
\lipsum[2]
\end{minipage}
\right.$
\lipsum[3]
\end{document}
但这有缺点
- 它溢出到右侧边缘,而不是左侧边缘;
- 我无法在括号中添加文字;并且
- 括号段落前的行距不正确。
也许可以修改一下,或者应该采用完全不同的方法?但我不知道该选哪一个。
答案1
您可以使用\makebox
来定义一个带有两个参数的新命令:第一个参数包含括号的文本,第二个参数包含段落文本;如下所示:
\documentclass{report}
\usepackage{amsmath}
\usepackage{lipsum}
\newcommand\BrText[2]{%
\par\smallskip
\noindent\makebox[\textwidth][r]{$\text{#1}\left\{
\begin{minipage}{\textwidth}
#2
\end{minipage}
\right.\nulldelimiterspace=0pt$}\par\smallskip
}
\begin{document}
\lipsum[1]
\BrText{Some text}{\lipsum[1]}
\lipsum[1]
\end{document}
答案2
\psbrace
来自pstricks-add
包可以做到这一点。您需要定位两个节点,然后使用括号将它们连接起来:
\documentclass{article}
\usepackage{pstricks,pstricks-add,lipsum}
\begin{document}
\lipsum[1]
\makebox[0pt]{\makebox[1.5cm][l]{\pnode{A}}}
\lipsum[2]
\makebox[0pt]{\makebox[1.5cm][l]{\pnode{B}}}
\lipsum[3]
\psbrace[rot=180,ref=r, nodesepA=-2ex](A)(B){Text}
\end{document}
答案3
这是另一种利用environ
包裹。该两步程序将内容(在 中\savetextbox
)装箱以获取其高度。然后它在边距中排版左括号,然后排版方框。
在以下最小工作示例中,bracetext
定义了一个新环境。它采用一个可选参数,指定文本块的宽度(默认值为\textwidth
)。可以修改此环境以采用参数(可选或强制),以便在左侧也显示文本。
\documentclass{report}
\usepackage{environ}% http://ctan.org/pkg/environ
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\newbox{\savetextbox}
\NewEnviron{bracetext}[1][\textwidth]{%
\begin{lrbox}{\savetextbox}%
\begin{minipage}{#1} \BODY \end{minipage}
\end{lrbox}%
\smallskip%
\noindent\makebox[0pt][r]{$\left\{\rule{0pt}{\ht\savetextbox}\right.$}%
\usebox{\savetextbox}\par
\smallskip%
}
\begin{document}
\lipsum[1]
\begin{bracetext}
\lipsum[2]
\end{bracetext}
\lipsum[3]
\end{document}
这lipsum
包裹用于提供虚拟文本錯誤!风格。
请注意,这种方法的一个缺点是括号不会跨页拆分。如果您想要跨页拆分,则应考虑使用mdframed
。但是,它并不支持您所要求的支撑。
答案4
这是对以下答案的修改:贡萨洛·梅迪纳,以便它适用于两列页面:
\documentclass[twocolumn]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\makeatletter
\newcommand\BrLeftText[2]{%
\par\smallskip
\noindent\makebox[\columnwidth][r]{$\text{#1}\left\{
\begin{minipage}{\columnwidth}
#2
\end{minipage}
\right.\nulldelimiterspace=0pt$}\par\smallskip
}
\newcommand\BrRightText[2]{%
\par\smallskip
\noindent\makebox[\columnwidth][l]{$\left.
\begin{minipage}{\columnwidth}
#2
\end{minipage}
\right\}$\text{#1}\nulldelimiterspace=0pt}\par\smallskip
}
\newcommand\BrText[2]{
\if@firstcolumn \BrLeftText{#1}{#2} \else \BrRightText{#1}{#2} \fi
}
\makeatother
\begin{document}
\BrText{left}{\lipsum[1]}
\newpage
\BrText{right}{\lipsum[1]}
\end{document}