具有单个单元格的分页表

具有单个单元格的分页表

我设置了一个环境,longtables用作书中的“提示”框和练习。左列仅显示一个旋转的单词(提示、练习或其他),而右列包含其余文本。现在的问题是右列是一个单元格,因此如果表格太大,(xe)latex 会决定将其放在新页面上。下面是我的意思的一个例子: 在此处输入图片描述

那么我怎样才能让它从当前页面开始并在必要时中断,然后继续下一页?

我的表格代码:

\documentclass[11pt]{book}

\usepackage{longtable}
\usepackage{array}
\usepackage{rotating}
\usepackage{lipsum}

\newcolumntype{M}[1]{>{%
  \parskip=0.5\baselineskip%
  \advance\parskip by 0pt plus 2pt
   \setlength{\parfillskip}{30pt plus 1fil}}m{#1}}

\newenvironment{exercise}[1]
{
    \begin{longtable}{m{0.05\textwidth}|M{0.85\textwidth}}
    \rotatebox{90}{\textbf{Övning}} & \textbf{#1} \newline
}
{\end{longtable}
\bigskip
}

\begin{document}

\lipsum

\begin{exercise}{1}
\lipsum
\end{exercise}

\end{document}

答案1

您不能使用 longtable 这样的组合。在休斯推荐了该软件包mdframed。在下面的例子中,您可以找到两种可能的情况mdframed

如果您还有其他问题,可以询问;-)

编辑:更改代码

\documentclass[11pt]{book}
\usepackage[framemethod=default]{mdframed}
\usepackage{rotating}

\usepackage{lipsum}
\makeatletter


\newrobustcmd\Titleenv[1]{%
   \setbox0=\hbox{\rotatebox[origin=cc]{90}{\textbf{#1}}}
   \setlength\@tempdimc{\dimexpr\ht0+\dp0\relax}
   \renewcommand*\md@@frametitle{%
      \llap{\smash{\raisebox{-.5\@tempdimc}{\box0}\hspace*{2em}}}}%
   \appto\md@frame@leftline@single{%
     \ifdimgreater{\mdfboundingboxheight}{\@tempdimc}%
     {}%
     {%
       \llap{\color{\mdf@middlelinecolor}%
           \rule[\dimexpr-.5\@tempdimc-\mdf@innerbottommargin@length\relax]%
                {\mdf@middlelinewidth@length}%
                {\dimexpr\@tempdimc+\mdf@innerbottommargin@length
                         +\mdf@innertopmargin@length\relax}%
            }%
     }%
   }%
}

\newenvironment{exercise}{%
  \mdfsetup{topline=false,rightline=false,bottomline=false,linecolor=red,
          linewidth=2pt,skipbelow=\topskip,skipabove=\topskip}
   \Titleenv{\"Ovning}%
\begin{mdframed}[]%
}{\end{mdframed}}

\begin{document}
\begin{exercise}
\lipsum[1]
\end{exercise}

\lipsum[1]

\begin{exercise}
Text
\end{exercise}

\lipsum[1]

\begin{exercise}
\lipsum
\end{exercise}
\end{document}

上述代码执行结果如下图所示: 在此处输入图片描述

答案2

也可以在默认文本宽度内设置行和垂直文本

\documentclass[11pt]{book}
\usepackage{framed}
\usepackage{rotating}
\usepackage{lipsum}   
\newenvironment{exercise}[1]
  {\par\begin{leftbar}\noindent\textbf{#1}\\
   \makebox(0,0){\put(-30,-50){\rotatebox{90}{\textbf{Övning}}}}\ignorespaces}
  {\end{leftbar}\par}

\begin{document}    
\lipsum

\begin{exercise}{1}
\lipsum
\end{exercise}

\end{document}

在此处输入图片描述

相关内容