اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
Close Sidebar
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

محبوب‌ترین برچسب‌ها

رفع خطا جدول مراجع ریاضی‌نویسی شکل xepersian شماره‌گذاری فهرست مطالب منابع bidi فونت parsilatex تک‌لایو اسلاید پانویس زی‌پرشین بیب‌تک بیمر پاورقی نماد tikz ویرایشگر biditexmaker سربرگ هدر bibtex قالب رسم شکل اندازه فونت واژه‌نامه ارجاع‌دهی texstudio beamer bidipresentation رسم جدول ماتریس عنوان فصل عنوان شکل اسلاید فارسی حاشیه فرمول‌نویسی گراف محیط قضیه اعمال نشدن تغییرات در پی‌دی‌اف زیرنویس شکل حروف‌چینی کد رنگ عدم اجرا متن لاتین و فارسی شماره صفحه مکان شکل شماره فصل tabriz_thesis فارسی‌تک align نیم‌فاصله فهرست اشکال listings tikzpicture بسته فرمول enumerate خروجی فاصله‌گذاری itemize نمایه biditools فرمول چندضابطه‌ای کادر texlive2015 glossaries biditufte-book سوال امتحانی نمودار شماره‌گذاری صفحات فونت فارسی و انگلیسی کپشن texmaker الگوریتم texlive2016 hyperref تصویر شماره پاورقی خطا پیوست‌ ماکرونویسی iust-thesis دیاگرام میک‌تک subfigure lollipop چپ‌چینی فصل‌نویسی تنظیم جدول اندیس لاتک شماره فرمول فاصله بین خطوط تک لایو 2015 به‌روزرسانی بسته aimc46 kashida سوال چهارگزینه‌ای texworks کاما حروف‌چینی چندستونی xindy جستجوی معکوس تورفتگی pdf پوستر فرمول طولانی tex-programming قرآن multicol header فهرست جداول قالب پایان‌نامه زیرنویس عنوان بخش فاصله سطرها اعداد فارسی اوبونتو میکروسافت ورد winedt آکولاد فلش نوشتافت شکست خط صفر توخالی کمک مالی بیرون‌زدگی شمارنده فصل tabriz-thesis محیط ریاضی رسم کادر جایابی تصویر caption شمارنده جداکننده نصب تک‌لایو شماره گذاری فاصله خطوط قالب کتاب فهرست نمادها غلط‌گیری املایی fancyhdr عکس پانویس پاراگرافی شماره قسمت شماره‌گذاری فرمول bidihl neveshtuft پاراگراف‌بندی فونت اعداد pgfplots وسط‌چینی افقی هایپرلینک الگوریتم‌ شعر پیکان قاب equation bidipoem eps جدول افقی قلم قسمت رسم نمودار توابع فونت ایتالیک شکستن جدول رسم گراف پانویس افقی بازیابی اطلاعات algorithm2e فونت بولد زیرشکل بولد geometry longtable xelatex fontspec متلب tabular extrafootnotefeatures text baselineskip tex computeautoilg متن فارسی و انگلیسی رسم نمودار tcolorbox فرمول چندخطی فاصله عمودی آپدیت texlive ایتالیک cite تک‌پارسی لوگو sumatra
2 نفر آنلاین
0 عضو و 2 مهمان در سایت حاضرند
بازدید امروز: 2792
بازدید دیروز: 4338
بازدید کل: 4281372

شکستن سطر هنگام رفتن به صفحه بعد در longtable

0 رای
95 بازدید

در خود بسته langtable چنین امکانی وجود ندارد که هنگام رفتن به صفحه جدید، سطر مربوط نیز شکسته شود و بقیه سطر به صفحه بعد منتقل شود و هرگاه تمام سطر در همان صفحه جا نشود به جای اینکه بقیه سطر به صفحه منتقل شود، کل سطر به صفحه بعد منتقل می‌شود. آیا راهکاری وجود دارد که فقط بقیه سطر به صفحه بعد منتقل شود؟
مثال:

\documentclass{article}
\usepackage{longtable}
\usepackage{blindtext}
\usepackage[a4paper,top=.5cm,bottom=.5cm,right=.2cm,left=.2cm]{geometry}
\begin{document}
    \begin{longtable}{|p{.2\textwidth}|p{.7\textwidth}|}
        \hline
        \blindtext & \blindtext[5] \\ \hline
        \blindtext & \blindtext[5] \\ \hline
    \end{longtable}
\end{document}
سوال شده 18 بهمن 1396 توسط مجتبی باغبان (9 امتیاز)

2 پاسخ

+1 رای

خیر. به این دلیل که ستون شما p است که یک \vbox است که قابلیت شکستن بین صفحات را ندارد.

برای این کار بسته cals مناسب‌تر است. راه‌حل زیر از اینجا برداشته شده است.

\documentclass{article}
\usepackage{lipsum}
\usepackage{cals}
\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{{150pt}{150pt}{150pt}}
\thead{\brow \bfseries \cell{header1}\cell{header2}\cell{header3}
  \mdseries \erow}
\brow \cell{\lipsum[ 1]}\cell{\lipsum[ 2]}\cell{\lipsum[ 3]} \erow
\brow \cell{\lipsum[ 4]}\cell{\lipsum[ 5]}\cell{\lipsum[ 6]} \erow
\brow \cell{\lipsum[ 7]}\cell{\lipsum[ 8]}\cell{\lipsum[ 9]} \erow
\brow \cell{\lipsum[10]}\cell{\lipsum[11]}\cell{\lipsum[12]} \erow
\brow \cell{\lipsum[13]}\cell{\lipsum[14]}\cell{\lipsum[15]} \erow
\brow \cell{\lipsum[16]}\cell{\lipsum[17]}\cell{\lipsum[18]} \erow
\end{calstable}
\end{document}
پاسخ داده شده 19 بهمن 1396 توسط وفا (20,475 امتیاز)
ویرایش شده 19 بهمن 1396 توسط وفا
0 رای

ممنون از پاسخ شما. فقط هنگام رفتن به صفحه جدید در اولین سطر ستون وسط به سمت چپ منتقل می‌شود و بقیه سطرها درست است.

\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}
پاسخ داده شده 19 بهمن 1396 توسط مجتبی باغبان (9 امتیاز)
...