در یک جدول نسبتا ساده وقتی از multirow\ استفاده شده است و با استفاده از بسته rotating قصد نوشتن عمودی بعضی از کلمات را دارم؛ ارتفاع سطرها متناسب با نوشته عمودی تغییر نکرده و نوشته ها مطابق شکل بیوست در هم ریخته می شود.
شما از بسته rotating هیچ استفادهای نمیکنید. دستور \rotatebox متعلق به بسته graphicx است نه بسته rotating.
متأسفانه من در حال حاضر دسترسی به تک ندارم که نمونه شما را تجزیه و تحلیل کنم بنابراین فقط میتوانم با دیدن کد و خروجی که قرار دادید حدس بزنم چه اتفاقی میافتد. نوشتهای که شما داخل دستور \rotatebox قرار میدهید پهناش از ارتفاع سطرهایی که دستور \multirow پوشش میدهد بیشتر است و بنابراین این مشکل رخ میدهد.
آيا راه حلی هست تا بتوان ارتفاع سطرها را به صورت خودکار متناسب با نوشته عمودی شده تنظیم کرد؟ کد کمینه ضمیمه شده است
یا از اندازه قلم کوچکتری استفاده کنید تا نوشتهای که شما داخل دستور \rotatebox قرار میدهید پهناش از ارتفاع سطرهایی که دستور \multirow پوشش میدهد بیشتر نباشد یا متن داخل \rotatebox را به اندازه ارتفاع تعداد ستونها تنظیم کنید. راهحل دیگر استفاده از یک \parbox است تا نوشته داخل \rotatebox بصورت خودکار شکسته شود.
راهحل خودکار
برای انجام این کار بصورت خودکار میتوانید از دستور \mymultirow که در نمونه زیر تعریف شده است استفاده کنید.
\documentclass{report}
\usepackage{graphicx}
\usepackage{xepersian}
\settextfont{Yas}
\newbox\mybox
\newcommand*{\mymultirow}[1]{%
\setbox\mybox\hbox{\rotatebox{90}{#1}}%
\setbox\mybox\vtop{\vskip10pt\box\mybox\vss}%
\box\mybox}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|c|c|c|}
\cline{2-3}
\multicolumn{1}{c|}{}&روتین&توضیحات\\
\hline
\mymultirow{برنامهریزی خطی}&\textsf{intlinprog}&{}\\
\cline{2-3}
&\textsf{linprog}&{}\\
\hline
\mymultirow{برنامهریزی غیرخطی غیرمقید}&\textsf{fminsearch}&{}\\
\cline{2-3}
&\textsf{fminunc}&{}\\
\hline
\mymultirow{برنامهریزی غیرخطی مقید}&\textsf{fminbnd}&{}\\
\cline{2-3}
&\textsf{fmincon}&{}\\
\hline
\mymultirow{بهینهسازی چندهدفه}&\textsf{fgoalattain}&{}\\
\cline{2-3}
&\textsf{fminimax}&{}\\
\hline
\mymultirow{حداقل مربعات خطی}&\textsf{lsqlin}&{}\\
\cline{2-3}
&\textsf{lsqnonneg}&{}\\
\cline{2-3}
&\textsf{mldevide}&{}\\
\hline
\end{tabular}
\end{table}
\end{document}
> ![enter image description here][1]
هماندازه کردن ارتفاع خانههای جدولی که دستور \mymultirow پوشش میدهد
\documentclass{article}
\usepackage{graphicx}
\usepackage{xepersian}
\settextfont{Yas}
\makeatletter
\newbox\mybox
\newcommand*{\mymultirow}[2]{%
\setbox\mybox\hbox{#2}%
\dimen@\wd\mybox
\divide\dimen@#1
\rule\z@\dimen@}
\newcommand*{\rotatemybox}{%
\rotatebox{90}{\llap{\kern-\dp\@arstrutbox\usebox\mybox}}}
\makeatother
\begin{document}
\begin{tabular}{|c|c|c|}
\cline{2-3}
\multicolumn{1}{c|}{}&روتین&توضیحات\\
\hline
\mymultirow{2}{برنامهریزی خطی}
&\textsf{intlinprog}&{}\\
\cline{2-3}
\mymultirow{2}{برنامهریزی خطی}\rotatemybox&\textsf{linprog}&{}\\
\hline
\mymultirow{2}{برنامهریزی غیرخطی غیرمقید}&\textsf{fminsearch}&{}\\
\cline{2-3}
\mymultirow{2}{برنامهریزی غیرخطی غیرمقید}\rotatemybox&\textsf{fminunc}&{}\\
\hline
\mymultirow{2}{برنامهریزی غیرخطی مقید}&\textsf{fminbnd}&{}\\
\cline{2-3}
\mymultirow{2}{برنامهریزی غیرخطی مقید}\rotatemybox&\textsf{fmincon}&{}\\
\hline
\mymultirow{2}{بهینهسازی چندهدفه}&\textsf{fgoalattain}&{}\\
\cline{2-3}
\mymultirow{2}{بهینهسازی چندهدفه}\rotatemybox&\textsf{fminimax}&{}\\
\hline
\mymultirow{3}{حداقل مربعات خطی}&\textsf{lsqlin}&{}\\
\cline{2-3}
\mymultirow{3}{حداقل مربعات خطی}&\textsf{lsqnonneg}&{}\\
\cline{2-3}
\mymultirow{3}{حداقل مربعات خطی}\rotatemybox&\textsf{mldevide}&{}\\
\hline
\mymultirow{2}{حداقل مربعات غیرخطی}&\textsf{lsqcurvefit}&{}\\
\cline{2-3}
\mymultirow{2}{حداقل مربعات غیرخطی}\rotatemybox&\textsf{lsqnonlin}&{}\\
\hline
\end{tabular}
\end{document}
