我非常喜欢这个网站设计的混合longtable
环境tabulary
,因此我开始专门使用它。
参考:
并且
我希望它能作为一个软件包正式发布。我可能还应该提到,我不熟悉 TeX 内在函数,所以不知道下面的代码是如何工作的,我只是把它复制粘贴在一起。
现在来谈谈问题。我需要使用多行。它建议使用 来防止多行行的分页符\\*
。但是,它仍然在第一行之后中断(并且 \nopagebreak
也无济于事)。
\documentclass[papersize,paper=a4]{scrreprt}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{tabulary}
%after gathering tthe code together
\makeatletter
\newcommand*\TY@cap@gobble[2][]{\\}% from ltxtable (adjusted)
\def\ltabulary{%
\def\caption{% from ltxtable (adjusted)
\@ifstar\TY@cap@gobble\TY@cap@gobble}
\def\endfirsthead{\\}%
\def\endhead{\\}%
\def\endfoot{\\}%
\def\endlastfoot{\\}%
\def\tabulary{%
\def\TY@final{%
\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}%
\def\endhead{\LT@end@hd@ft\LT@head}%
\def\endfoot{\LT@end@hd@ft\LT@foot}%
\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}%
\longtable}%
\let\endTY@final\endlongtable
\TY@tabular}%
\dimen@\columnwidth
\advance\dimen@-\LTleft
\advance\dimen@-\LTright
\tabulary\dimen@}
\def\endltabulary{\endtabulary}
\makeatother
\makeatletter
\def\@cline#1-#2\@nil{%
\omit
\@multicnt#1%
\advance\@multispan\m@ne
\ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
\@multicnt#2%
\advance\@multicnt-#1%
\advance\@multispan\@ne
\leaders\hrule\@height\arrayrulewidth\hfill
\cr
\noalign{\nobreak\vskip-\arrayrulewidth}}
\makeatother
\begin{document}
\vspace*{8cm}
\setlength{\tymin}{2.8cm}
\begin{ltabulary}{|L|L|L|L|}
\caption{Befehle und Parameter des UART-Protokolls\label{tab:protokoll}}\\
\hline
\textbf{Befehl} &\textbf{erster Parameter} &\textbf{zweiter Parameter}& \textbf{Funktion des Anerkennungswerts} \endhead\hline
\multirow{5}{=}{\texttt{0}: Steuerung der Verarbeitungsmodulen}&\texttt{0}: Schaltet die externe Steuerung ab und aktiviert die interne Steuerung beginnend mit dem Module angegeben im zweiten Parameter.&\multirow{3}{=}{Nummer des Moduls an dem den Befehl ausgeführt werden soll }&\multirow{3}{=}{Der Anerkennungswert wird zurück gesendet sobald der Befehl ausgeführt wurde.}\\*\cline{2-2}
&\texttt{1}: Aktiviert ein Modul extern.&&\\*\cline{2-2}
&\texttt{2}: Wie \texttt{1}, aber Mikrocontroller wartet dann, bis der Modul seine Aufgabe erledigt, bevor den Anerkennungswert zu senden&&\\*\cline{2-3}
&\texttt{3}: Mikrocontroller sendet den Anerkennungswert, sobald der aktive Modul seine Aufgabe erledigt. Dies ist primär dafür gedacht, wenn der FPGA auf die interne Steuerung eingestellt ist&\multirow{2}{=}[-1cm]{Der zweite Parameter wird ignoriert. }&\\*\cline{2-2 }
&\texttt{4}: Die Verarbeitungsmodule werden in Reset-Zustand versetzt. Er wird durch die Parameterwert \texttt{0-2} deaktiviert.&&\\\hline
\end{ltabulary}
\end{document}
我使用最新的 MikTex 和 lualatex