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

رسم جدول در لاتک و زی پرشین

رسم جدول در لاتک و زی پرشین

رسم جدول با محیط tabular

در لاتک جدول را با استفاده از محیط tabular رسم می‌کنیم. لاتک خودش پهنای ستون‌ها را متناسب با محتوای هر سلول تنظیم می‌کند. ساده‌ترین جدول با ۲ ستون و ۱ ردیف به صورت زیر رسم می‌شود:

\documentclass[12pt]{article}
\begin{document}
	\begin{tabular}{cc}
		 cell 1 & cell 2  
	\end{tabular} 
\end{document}

خروجی:

جدول ساده در لاتک

جدول ساده در لاتک

حرف c مخفف center به معنای وسط‌چین شدن محتویات سلول‌های جدول و ۲ عدد بودن آن به خاطر ۲ ستونه بودن جدول است. به جای حرف c می‌توانید از حرف‌های r به معنی right و l به معنی left هم استفاده کنید. از کاراکتر & هم برای جدا کردن سلول‌های جدول استفاده می‌شود. محیط tabular یک آرگومان اختیاری هم به صورت

\begin{tabular}[t]{cc}

برای چینش جدول، وقتی که جدول داخل جمله است، دارد که در حالت پیش‌فرض روی حرف c قرار دارد. در حالت پیش‌فرض، جدول نسبت به متن سمت چپ و راستش از لحاظ عمودی، وسط‌چین می‌شود. در صورت به کار بردن حرف t، سطح بالایی جدول و متن سمت چپ و راستش در یک امتداد و در صورت استفاده از حرف b، سطح پایینی جدول و متن سمت چپ و راستش در یک امتداد قرار می‌گیرند؛ البته چون تقریباً همیشه جدول‌ها در خط‌های جداگانه قرار می‌گیرند، از این آرگومان اختیاری استفاده نمی‌شود.

اگر بخواهیم بین و اطراف ستون‌ها یک خط عمودی رسم کنیم، کافی است به صورت زیر از کاراکتر | استفاده کنیم:

\documentclass[12pt]{article}
\begin{document}
	\begin{tabular}{|c|c|}
		 cell 1 & cell 2  
	\end{tabular} 
\end{document}

خروجی:

رسم خط عمودی در جدول

اگر بخواهید قبل و بعد از هر ردیف جدول، خط افقی بکشید، باید از دستور \hline استفاده کنید. به اضافه شدن \\ دقت کنید:

\documentclass[12pt]{article}
\begin{document}
	\begin{tabular}{|c|c|}
	\hline
		 cell 1 & cell 2 \\
	\hline		 
	\end{tabular} 
\end{document}

خروجی:

رسم خط افقی در جدول

اضافه کردن سطر و ستون به جدول در لاتک

برای اضافه کردن ۱ ستون و ۲ سطر دیگر به جدول در لاتک کافی است به صورت زیر عمل کنید:

\documentclass[12pt]{article}
\begin{document}
	\begin{tabular}{|c|c|c|}
	\hline
		 cell 1 & cell 2 & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular} 
\end{document}

خروجی:

وسط‌چین کردن جدول در لاتک

برای وسط‌چین کردن خود جدول نسبت به صفحه می‌توانید از محیط center استفاده کنید:

\documentclass[12pt]{article}
\begin{document}
  \begin{center}
	\begin{tabular}{|c|c|c|}
	\hline
		 cell 1 & cell 2 & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular}
  \end{center}
\end{document}

خروجی:

جدول وسط‌چین در لاتک

جدول وسط‌چین در لاتک

تغییر فاصله بین ستون‌های جدول در لاتک

اگر دوست دارید فاصله بین ستون‌های جدول را تغییر دهید، می‌توانید مقدار \tabcolsep را به صورت زیر تغییر دهید. مقدار پیش‌فرض، 6pt است:

\documentclass[12pt]{article}
\begin{document}
\setlength{\tabcolsep}{14pt}
  \begin{center}
	\begin{tabular}{|c|c|c|}
	\hline
		 cell 1 & cell 2 & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular}
  \end{center}
\end{document}

خروجی:

یک راه دیگر برای تغییر فاصله بین ستون‌های یک جدول استفاده از عبارت @{…} و گذاشتن دستوری مثل \hspace{9mm} در آن به صورت زیر است:

\documentclass[12pt]{article}
\begin{document}
  \begin{center}
	\begin{tabular}{|c@{\hspace{6mm}}|@{\hspace{9mm}}c@{\hspace{19mm}}
	                      |@{\hspace{9mm}}c@{\hspace{4mm}}|}
	\hline
		 cell 1 & cell 2 & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular}
  \end{center}
\end{document}

خروجی:

دقت داشته باشید که عبارت @{} فاصله بین محتوای سلول‌ها و خط عمودی کنار‌شان را حذف می‌کند. کد زیر و خروجی‌اش این مساله را به خوبی نشان می‌دهد:

\documentclass[12pt]{article}
\begin{document}
  \begin{center}
	\begin{tabular}{|@{}c@{}|@{}c@{}|@{}c@{}|}
	\hline
		 cell 1 & cell 2 & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular}
  \end{center}
\end{document}

خروجی:


تغییر فاصله بین ردیف‌های جدول در لاتک

برای تغییر فاصله بین ردیف‌های جدول هم می‌توانید مقدار دستور \arraystretch را به صورت زیر تغییر دهید. مقدار پیش‌فرض، 1 است:

\documentclass[12pt]{article}
\begin{document}
\renewcommand{\arraystretch}{1.6}
  \begin{center}
	\begin{tabular}{|c|c|c|}
	\hline
		 cell 1 & cell 2 & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular}
  \end{center}
\end{document}

خروجی:

یک راه دیگر برای تغییر فاصله بین ردیف‌های یک جدول، استفاده از عبارتی مثل [14mm] بعد از \\ به صورت زیر است:

\documentclass[12pt]{article}
\begin{document}
  \begin{center}
    \begin{tabular}{|c|c|c|}
    \hline
         cell 1 & cell 2 & cell 3 \\
    \hline  
         cell 4 & cell 5 & cell 6 \\[14mm]
    \hline 
         cell 7 & cell 8 & cell 9 \\[5mm]
    \hline      
    \end{tabular}
  \end{center}
\end{document}

خروجی:

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

\documentclass[12pt]{article}
\begin{document}
  \begin{center}
	\begin{tabular}[t]{|c|p{4cm}|c|}
	\hline
		 cell 1 & sociis natoque penatibus et magnis dis parturient 
                 montes, nascetur ridiculus mus. & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular} 
  \end{center}
\end{document}

خروجی:

شکستن خط در جدول

برای شکستن خط در سلول بالا که محتوای آن بلند است، باید از دستور \newline به صورت زیر استفاده کنید:

\documentclass[11pt]{article}
\begin{document}
  \begin{center}
	\begin{tabular}{|c|p{4cm}|c|}
	\hline
		 cell 1 & sociis natoque penatibus et magnis dis. \newline parturient 
                 montes, nascetur ridiculus mus. & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular} 
  \end{center}
\end{document}

خروجی:

در مثال بالا اگر می‌خواهید cell 1 و cell 3 نسبت به سلول طولانی وسطی به صورت افقی، وسط‌چین شوند، می‌توانید از بسته array و پارامتر m آن استفاده کنید:

\documentclass[11pt]{article}
\usepackage{array}
\begin{document}
  \begin{center}
    \begin{tabular}{|c|m{4cm}|c|}
    \hline
         cell 1 & sociis natoque penatibus et magnis dis. \newline parturient 
                 montes, nascetur ridiculus mus. & cell 3 \\
    \hline  
         cell 4 & cell 5 & cell 6 \\
    \hline 
         cell 7 & cell 8 & cell 9 \\
    \hline      
    \end{tabular} 
  \end{center}
\end{document}

خروجی:

و اگر می‌خواهید cell 1 و cell 3 نسبت به سطح پایین سلول طولانی وسطی در یک امتداد قرار بگیرند، می‌توانید از بسته array و پارامتر b به معنی bottom استفاده کنید:

\documentclass[11pt]{article}
\usepackage{array}
\begin{document}
  \begin{center}
    \begin{tabular}{|c|b{4cm}|c|}
    \hline
         cell 1 & sociis natoque penatibus et magnis dis. \newline parturient 
                 montes, nascetur ridiculus mus. & cell 3 \\
    \hline  
         cell 4 & cell 5 & cell 6 \\
    \hline 
         cell 7 & cell 8 & cell 9 \\
    \hline      
    \end{tabular} 
  \end{center}
\end{document}

خروجی:

دستور cline در جدول

در متن‌های امروزی معمولاً از خط‌های عمودی در جدول استفاده نمی‌کنند. اگر مایل به گذاشتن خط‌های افقی هم نیستید ولی می‌خواهید در بعضی از جاهای جدول، خط افقی داشته باشید، می‌توانید از دستور \cline به صورت زیر استفاده کنید:

\documentclass[11pt]{article}
\begin{document}
	\begin{tabular}{ccc}
		 cell 1 & cell 2 & cell 3 \\ \cline{2-3}	 
		 cell 4 & cell 5 & cell 6 \\ \cline{1-2}
		 cell 7 & cell 8 & cell 9 \\	 
	\end{tabular} 
\end{document}

خروجی:

دستور cline در جدول

دستور cline در جدول

کاربرد دستور multicolumn در جدول

گاهی ممکن است نیاز داشته باشید که مثلاً ۲ تا از ستون‌های جدول یک سرستون داشته باشند. برای این کار کافی است دستور \multicolumn را به صورت زیر به کار ببرید:

\documentclass[11pt]{article}
\begin{document}
	\begin{tabular}{|c|c|c|}
	\hline
		 \multicolumn{2}{|c|}{Football Clubs} & cell 3 \\
	\hline	 
		 cell 4 & cell 5 & cell 6 \\
	\hline	
		 cell 7 & cell 8 & cell 9 \\
	\hline		 
	\end{tabular} 
\end{document}

خروجی:

کاربرد دستور multirow در جدول

اگر می‌خواهید دو یا چند تا از ردیف‌های جدول‌تان یک سرردیف داشته باشند، می‌توانید از دستور multirow به صورت زیر استفاده کنید. برای این کار اول باید بسته \multirow را فراخوانی کنید. کاراکتر * برای این است که پهنای ستون به طور طبیعی تعیین شود. اگر می‌خواهید پهنا را به طور دستی تعیین کنید، می‌توانید به جای * از مثلاً 6cm استفاده کنید:

\documentclass[11pt]{article}
\usepackage{multirow}
\begin{document}
	\begin{tabular}{ |l|l|l| }
	\hline
		\multicolumn{3}{ |c| }{Team sheet} \\
	\hline
		Goalkeeper & GK & Paul Robinson \\ \hline
		\multirow{3}{*}{Midfielders} & MC & David Batty \\
		& MC & Eirik Bakke \\
		& MC & Jody Morris \\ \hline
		Forward & FW & Jamie McMaster \\ \hline
		\multirow{2}{*}{Strikers} & ST & Alan Smith \\
		& ST & Mark Viduka \\
	\hline
	\end{tabular}
\end{document}

خروجی:

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

رسم جدول در زی پرشین

برای رسم جدول فارسی کافی است بسته زی‌پرشین را فراخوانی و یک فونت فارسی تعریف کنید. من در اینجا از فونت Yas استفاده می‌کنم:

\documentclass[11pt]{article}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
	\begin{tabular}{|c|c|r|}
	\hline
		 سلول ۱ & سلول ۲ & سلول ۳ \\
	\hline	 
		 سلول ۴ & سلول بلندتر ۵ & سلول ۶ \\
	\hline	
		 سلول ۷ & سلول ۸ & سلول کمی بلندتر ۹ \\
	\hline		 
	\end{tabular} 
\end{document}

خروجی:

رسم جدول در زی پرشین

رسم جدول در زی پرشین

اضافه کردن عنوان (کپشن) به جدول در زی‌پرشین

برای اضافه کردن عنوان به جدول در زی‌پرشین می‌توانید از محیط table و دستور \caption{…} استفاده کنید:

\documentclass[11pt]{article}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
  \begin{table}[!h]
  \centering
  \caption{یک عنوان جدول آزمایشی}
	\begin{tabular}{|c|c|r|}
	\hline
		 سلول ۱ & سلول ۲ & سلول ۳ \\
	\hline	 
		 سلول ۴ & سلول بلندتر ۵ & سلول ۶ \\
	\hline	
		 سلول ۷ & سلول ۸ & سلول کمی بلندتر ۹ \\
	\hline		 
	\end{tabular} 
  \end{table}
\end{document}

خروجی:

دقت داشته باشید که در جدول بالا به جای محیط center از دستور \centering استفاده شده است. محیط table اصطلاحاً یک محیط شناور است؛ یعنی وقتی جسمی در لاتک شناور می‌شود، در نزدیکی مکان متناظر با مکانش در فایل سورس در خروجی ظاهر می‌شود؛ اما ممکن است انتخاب کند که کجا هم قرار بگیرد. شناور بودن خاصیت بسیار مفیدی در هنگام صفحه‌آرایی است؛ چون ممکن است مثلاً جدولی در یک صفحه جا نشود و مجبور شویم آن را به صفحه‌ای دیگر منتقل کنیم. در واژه‌پردازهای WYSIWYG این کار به صورت دستی انجام می‌شود؛ اما در لاتک و زی‌پرشین کافی است از یکی از حروفی که در ادامه می‌آید، استفاده کنیم: حرف h در جدول بالا به معنای مکان قرارگیری جدول در خروجی پی‌دی‌اف است. به عبارت دیگر با گذاشتن حرف h به لاتک می‌گویید در صورت امکان جدول را در همین جایی که در فایل سورس (تک) آمده، در فایل خروجی هم قرار بده. به جای حرف h می‌توان از t به معنای بالای صفحه، b به معنای پایین صفحه، p به معنای یک صفحه اختصاص داده‌شده برای شناورها قرار بده. در مورد کاراکتر ! کمی توضیح بیشتر نیاز است:

در لاتک حدود ۱۸ پارامتر وجود دارد که روی نحوه قرارگیری اجسام شناور در صفحه تاثیر می‌گذارند. به عنوان مثال پارامتر topfraction که مقدار پیش‌فرضش، 0.7 است، برابر ماکزیمم کسری (درصدی) از صفحه است که اجسام شناور می‌توانند در بالای یک صفحه اشغال کنند. حالا وقتی برای محیط table از ! به صورت

\begin{table}[!t]

استفاده می‌کنید، در واقع به لاتک می‌گویید که بدون هیچ‌گونه توجهی به آن ۱۸ پارامتر مؤثر در قرارگیری اجسام شناور در صفحه، به حرف من که با آرگومان t به تو می‌گویم، گوش کن و جسم شناور را بالای صفحه قرار بده؛ حتی اگر آن صفحه، صفحه اول یک فصل باشد و موقع وارد کردن

\begin{table}[t]

به لاتک می‌گویید ضمن در نظر گرفتن آن ۱۸ پارامتر مؤثر در قرارگیری اجسام شناور، اگه برایت امکان دارد و همه چیز اوکی بود، این جسم شناور را بالای صفحه قرار بده.

ارجاع به جدول در زی‌پرشین

برای ارجاع به جدول در لاتک و زی‌پرشین کافی است بعد از دستور \caption{…} با استفاده از دستور \label{…} یک برچسب یکتا به جدول اختصاص بدهیم و بعد در هر کجای متن که خواستیم با استفاده از دستور \ref{…} به آن ارجاع بدهیم:

\documentclass[11pt]{article}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
 همان‌طور که در جدول \ref{tab1-1} می‌بینید، مباحث گفته‌شده 
 را می‌توان در قالب شکلی نو نیز بیان کرد. در بخش‌های بعدی 
 کتاب به جنبه‌های دیگر این موضوع می‌پردازیم. 

  \begin{table}[!h]
  \centering
  \caption{یک عنوان جدول آزمایشی}
  \label{tab1-1}
	\begin{tabular}{|c|c|r|}
	\hline
		 سلول ۱ & سلول ۲ & سلول ۳ \\
	\hline	 
		 سلول ۴ & سلول بلندتر ۵ & سلول ۶ \\
	\hline	
		 سلول ۷ & سلول ۸ & سلول کمی بلندتر ۹ \\
	\hline		 
	\end{tabular} 
  \end{table}
\end{document}

خروجی:

ارجاع به جدول در زی‌پرشین

ارجاع به جدول در زی‌پرشین

دقت داشته باشید که عنوان جدول باید همیشه بالای آن باشد. همچنین یک جدول هیچ‌وقت نباید قبل از اولین ارجاعش در متن ظاهر شود. خوبی ارجاع به جدول این است که اگر موقع صفحه‌آرایی، مکان جدول تغییر کند، متن‌تان با داشتن جملاتی مثل «در جدول زیر…» گنگ نمی‌شود؛ بنابراین به جای استفاده از عبارت‌هایی مثل «در جدول زیر می‌بینید که…»، به جدول‌هایتان ارجاع بدهید. بدیهی است که در صورت کم یا زیاد شدن جدول‌ها، شماره جدول‌ها هم در متن و هم در عنوان جدول بعد از ۲ بار اجرا به طور خودکار به‌روزرسانی می‌شود.

ایجاد فهرست جداول در لاتک

برای ایجاد فهرست جداول یا جدول‌ها در لاتک و زی‌پرشین نیازی به کار دستی نیست. لاتک این کار را به طور جالبی انجام می‌دهد! برای این کار کافی است دستور \listoftables را در یک جایی از سندتان قرار دهید. بعد از ۲ بار اجرای فایل‌تان، فهرست جداول به طور زیبایی ایجاد و در خروجی چاپ می‌شود:

\documentclass[11pt]{article}
\usepackage{xepersian}
\settextfont{Yas}
\setmathdigitfont{Yas}
\begin{document}
\listoftables
\newpage
 همان‌طور که در جدول \ref{tab1-1} می‌بینید، مباحث گفته‌شده 
 را می‌توان در قالب شکلی نو نیز بیان کرد. در بخش‌های بعدی 
 کتاب به جنبه‌های دیگر این موضوع می‌پردازیم. 

  \begin{table}[!h]
  \centering
  \caption{نقاط پیوستگی توابع در بازه‌های مختلف}
  \label{tab1-1}
	\begin{tabular}{|c|c|r|}
	\hline
		 سلول ۱ & سلول ۲ & سلول ۳ \\
	\hline	 
		 سلول ۴ & سلول بلندتر ۵ & سلول ۶ \\
	\hline	
		 سلول ۷ & سلول ۸ & سلول کمی بلندتر ۹ \\
	\hline		 
	\end{tabular} 
  \end{table}

\begin{table}[!h]
  \centering
  \caption{میزان پیوستگی، تقارن و تنوع در چند شهر ایران}
  \label{tab1-2}
    \begin{tabular}{rccc}
    \hline
             شهر&پیوستگی &تقارن & تنوع\\
    \hline
             تهران& $37.3$ &$14$&کم\\ 
             کرمانشاه & $ 6.43$&$24$&متوسط\\ 
             تبریز&$17$ &$16.9$&زیاد\\ 
    \hline
    \end{tabular}
  \end{table}
\end{document}

بخشی از خروجی:

اضافه کردن فهرست جداول در لاتک

اضافه کردن فهرست جداول در لاتک

دقت کنید که در کد بالا، اعداد داخل $…$ قرار گرفته‌اند تا با فونت اعداد ریاضی یکسان باشند. همچنین دستور \setmathdigitfont{Yas} هم اضافه شده است تا فونت اعداد ریاضی، فارسی باشد.

ادامه دارد…

منبع: + و +

سرمایه‌گذاری روی بیت‌کوین