我尝试在长文本上添加括号,但文本和括号在页面末尾消失,如图底部所示。理想情况下,文本和括号应从下一页继续。
下面举一个例子来说明这个问题:
\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}
\BrText{Some text}{\lipsum[1]\lipsum[1] \lipsum[1] \lipsum[1]}
\end{document}
答案1
以下代码使用包组合插入两个单独的、断开的括号:
abraces
:适用于不对称(和断裂)的牙套;zref
的savepos
模块:用于捕获文本内的坐标;eso-pic
:用于在页面F
或G
循环(或B
确认G
循环)内、单个页面或所有页面上放置内容;以及graphicx
:用于旋转内容。
\documentclass{article}
\usepackage{abraces,zref-savepos,eso-pic,graphicx}
\usepackage{lipsum}
\begin{document}
\lipsum[2]% Some text before start of brace
% Insert first page, broken left brace
\AddToShipoutPictureFG*{%
\AtTextLowerLeft{%
\zsavepos{textblock-bottom}% Capture bottom of text block coordinate
\raisebox{-.2\baselineskip}{%
\makebox[0pt][r]{%
\rotatebox{90}{%
$\aoverbrace[1U1R]{\hspace{\dimexpr\zposy{brace-top}sp-\zposy{textblock-bottom}sp+\baselineskip}}^{\rotatebox{-90}{\scriptsize some text}}$%
}%
}%
}%
}%
}%
\leavevmode\zsavepos{brace-top}%
This text starts somewhere on this page.
\lipsum[2-7]
% Insert half-page, broken left brace
\AddToShipoutPictureFG*{%
\AtTextLowerLeft{%
\raisebox{\dimexpr\zposy{brace-bottom}sp-\zposy{textblock-bottom}sp}{%
\makebox[0pt][r]{%
\rotatebox{90}{%
$\aoverbrace[L1]{\hspace{\dimexpr\textheight-\zposy{brace-bottom}sp+\zposy{textblock-bottom}sp}}$%
}%
}%
}%
}%
}%
\leavevmode\zsavepos{brace-bottom}%
This text is in the middle of the second page.
\lipsum[8-15]
\end{document}
abraces
'\aoverbrace[<brace spec>]
以字符序列作为可选<brace spec>
指定,类似于tabular
其列指定需要字符序列。具体来说,以下是字符的含义(取自abraces
文档):
捕获支撑开始( brace-top
)和结束( )的位置(包括作为参考)并用于计算支撑长度/高度,然后旋转到位。brace-bottom
textblock-bottom