答案1
选择哪种解决方案在很大程度上取决于您希望在何种情况下使用这种安排。由于我不清楚这一点,我选择了一种使用tcolorbox
包的高度可定制的变体:
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\usetikzlibrary{decorations.pathreplacing}
\usepackage{lipsum}
\newtcolorbox{twocolbox}[1]{
empty,
left*=0pt,
right*=25pt,
sidebyside,
sidebyside align=top,
sidebyside gap=15pt,
overlay={
\draw[decorate, decoration={brace}]
([xshift=-15pt, yshift=-10pt]frame.north east) --
([xshift=-15pt, yshift=10pt]frame.south east)
node[midway, xshift=10pt, rotate=-90, font=\large] {#1};
}
}
\begin{document}
\lipsum[3]
\begin{twocolbox}{Methods}
Random Text in Left Column
\lipsum[1]
\tcblower
Random Text in Right Column
\lipsum[2]
\end{twocolbox}
\lipsum[3]
\end{document}
由于您可以使用 Ti 的全部范围钾这里有 Z 魔法,可以很容易地为括号着色或将其画得更粗或使其在数学模式下看起来更像括号(为此您还需要加载库calligraphy
):
\usetikzlibrary{decorations.pathreplacing, calligraphy}
% [...]
\newtcolorbox{twocolbox}[1]{
empty,
left*=0pt,
right*=25pt,
sidebyside,
sidebyside align=top,
sidebyside gap=15pt,
overlay={
\draw[decorate, decoration={calligraphic brace}, pen colour={blue}, very thick]
([xshift=-15pt, yshift=-10pt]frame.north east) --
([xshift=-15pt, yshift=10pt]frame.south east)
node[midway, xshift=10pt, rotate=-90, font=\large] {#1};
}
}
答案2
这是一个使用并排minipage
环境的解决方案。第一个(外部)小页面包含第二对并排的“内部”小页面,其中包含逐项列表。第二个外部小页面用于容纳旋转后的字符串“方法”。
\documentclass{article} % or some other suitable class
\usepackage{ragged2e} % for \RaggedRight macro
\usepackage{enumitem} % for \newlist and \setlist macros
\newlist{myitemize}{itemize}{1} % create a bespoke itemize-like list env.
\setlist[myitemize,1]{label=\textbullet,left=0pt,nosep,
before={\begin{minipage}[t]{\linewidth}\RaggedRight},
after={\strut\end{minipage}}}
\usepackage{graphicx} % for \rotatebox macro
\usepackage{lipsum} % filler text
\begin{document}
\hrule % just to illustrate width of text block
\begin{center}
$\left.
\begin{minipage}{0.7\textwidth} % outer minipage (choose a suitable width)
%% sum of widths of two "inner" minipages and of \hspace instr. should equal `1\linewidth`.
\begin{minipage}[t]{0.5\linewidth} % first inner minipage
\begin{myitemize}
\item \lipsum[2][1-3] % filler text
\item \lipsum[3][1-3] % more filler text
\end{myitemize}
\end{minipage}% % end of first inner minipage
\hspace{0.05\linewidth}%
\begin{minipage}[t]{0.45\linewidth} % second inner minipage
\begin{myitemize}
\item \lipsum[3][1-3]
\item \lipsum[2][1-3]
\end{myitemize}
\end{minipage}% % end of second inner minipage
\end{minipage} % end of outer minipage
\hspace{1em}
\right\}$
\hspace{1em}
\begin{minipage}{0.04\textwidth} % encase \rotatebox instruction in another minipage
\rotatebox{-90}{\huge Methods}
\end{minipage}
\end{center}
\end{document}
答案3
您应该定义自己的环境,以免原始代码污染文档。选择一个比 更好的名称foo
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\newsavebox{\foobox}
\newlength{\foowidth}
\newlength{\foowidthaux}
\newenvironment{foo}[1]
{%
\begin{flushleft}
\sbox{\foobox}{\rotatebox[origin=Bc]{-90}{\LARGE#1}}%
\settowidth{\foowidthaux}{%
$\Biggr\rbrace\,\usebox{\foobox}$%
\hspace{2\arraycolsep}%
}%
\setlength{\foowidth}{\dimexpr(\textwidth-\foowidthaux)/2\relax}%
$\left.\kern-\nulldelimiterspace
\begin{array}{@{}ll@{}}
\begin{minipage}[t]{\foowidth}
}
{%
\end{minipage}
\end{array}
\right\rbrace\!\usebox{\foobox}$
\end{flushleft}
}
\newcommand{\changecolumn}{\end{minipage}&\begin{minipage}[t]{\foowidth}}
\begin{document}
\lipsum[2]
\begin{foo}{Methods}
\lipsum[3][1-6]
\changecolumn
\lipsum[4]
\end{foo}
\lipsum[5]
\end{document}
我保存了要旋转的部分,以便可以测量它,并进行了一些调整,这样我就可以计算出两个小页面的宽度。它们在 内顶部对齐array
,因此\right\rbrace
可以做正确的事情并覆盖整个内容,与两个小页面中的文本无关。
该\changecolumn
命令提供左侧小页面的结束、对齐字符和右侧小页面的开始。