ممنون از پاسخ شما. فقط هنگام رفتن به صفحه جدید در اولین سطر ستون وسط به سمت چپ منتقل میشود و بقیه سطرها درست است.
\documentclass{article}
\usepackage{lipsum}
\usepackage{cals}
\usepackage[a4paper,top=.5cm,bottom=.5cm,right=2.2cm,left=2.2cm]{geometry}
\showboxbreadth=100
\showboxdepth=100
\makeatletter
\let\oldDispatch=\cals@row@dispatch
\newbox\rowBefore
\newbox\rowAfter
\newbox\decorationCopy
\newdimen\splitHeight
\def\cals@row@dispatch{%
\cals@ifbreak\iftrue % detect that a break is required
\splitHeight=\pagegoal \advance\splitHeight -\pagetotal
\ifdim \splitHeight>50pt % break inrow only if at least 100pt left
\advance\splitHeight -5pt % avoid pagebreak due to overflows
%
% Split the current row on two: before and after the break
%
\setbox\rowBefore=\hbox{}
\setbox\rowAfter=\hbox{}
\def\next{%
\setbox0=\lastbox
\ifvoid0
\def\next{\global\setbox\rowBefore=\box\rowBefore
\global\setbox\rowAfter=\box\rowAfter }%
\else
\setbox2=\vsplit0 to\splitHeight
\setbox\rowBefore=\hbox{\box2 \unhbox\rowBefore}%
\setbox\rowAfter=\hbox{\box0 \unhbox\rowAfter}%
\fi
\next}
\setbox0=\hbox{\unhbox\cals@current@row \next}
%
% Decoration backup, typeset the first row,
% restore context, typeset the second at the end of macro
%
\setbox\decorationCopy=\copy\cals@current@cs
\setbox\cals@current@row=\box\rowBefore
\ht\cals@current@cs=\ht\cals@current@row
\oldDispatch
\cals@issue@break
\cals@thead@tokens
\setbox\cals@current@row=\box\rowAfter
\cals@reheight@cells\cals@current@row
\setbox\cals@current@cs=\box\decorationCopy
\ht\cals@current@cs=\ht\cals@current@row
\let\cals@current@context=b
\fi
\fi
\oldDispatch}
\begin{document}
\begin{calstable}
\colwidths{{55pt}{400pt}{20pt}}
\thead{\brow \bfseries \cell{header1}\cell{header2}\cell{header3}
\mdseries \erow}
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\brow \cell{1}\cell{\lipsum[ 2]}\cell{1.5} \erow
\end{calstable}
\end{document}