侧边距中的括号和文本

侧边距中的括号和文本

在文本中,我想通过在左侧边缘放置一个花括号来强调一两个段落,并在其旁边垂直放置一些围绕花括号中心的短文本。

问题在正文旁边添加大括号演示如何在正文中添加括号,也许这可以作为起点?对已接受的答案进行了轻微的修改

\documentclass{report} 
\usepackage{lipsum}

\begin{document}
\lipsum[1]
\noindent$\left\{
\begin{minipage}{\textwidth}
\lipsum[2]
\end{minipage}
\right.$
\lipsum[3]
\end{document}

但这有缺点

  1. 它溢出到右侧边缘,而不是左侧边缘;
  2. 我无法在括号中添加文字;并且
  3. 括号段落前的行距不正确。

也许可以修改一下,或者应该采用完全不同的方法?但我不知道该选哪一个。

答案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}

在此处输入图片描述

相关内容