% !TeX root=lshort.tex % !TEX TS-program=xelatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents: Typesetting Part of LaTeX2e Introduction % $Id: typeset.tex 169 2008-09-24 07:32:13Z oetiker $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{حروف‌چینی متن} \begin{intro} بعد از مطالعهٔ فصل پیش، چیزهای ابتدایی را می‌دانید که لاتک با آنها سروکار دارد. در این فصل مطالب دیگری را خواهید آموخت که برای تولید نوشته‌های واقعی مفید هستند. \end{intro} \section{ساختار متن و زبان} انتقال اطلاعات و ایده‌ها به خواننده مهمترین نکتهٔ نوشتن یک متن است. اگر نوشتار به درستی ساختاربندی شده باشند خواننده به راحتی مطالب را می‌فهمد و این مطلب موقعی اتفاق می‌افتد که ساختار حروف‌چینی متن انعکاس دهنده ساختار محتوای متن باشد. تفاوت لاتک با دیگر سیستم‌های حروف‌چینی در این است که تنها باید ساختار منطقی و زیبایی نوشتار را به لاتک معرفی کرد. آنگاه لاتک با استفاده از قوانینی که در متن و در فایل‌های الصاقی ارائه شده است حروف‌چینی نوشتار را انجام می‌دهد. مهمرین واحد در لاتک (و در حروف‌چینی) پاراگراف \index{بیی@پاراگراف}\romanindex{paragraph} است. ما به آن \emp{واحد متن} می‌گوییم زیرا پاراگراف قسمت به‌هم‌ چسبیده‌ای است که یک ایده را بازگو می‌کند. در این بخش یاد می‌گیریم که چگونه خط را با فرمان \texttt{\bs\bs}، و پاراگراف‌ را با خالی گذاشتن یک خط بشکنیم. بنابراین اگر مطلب جدیدی قرار است که شروع شود باید پاراگراف جدید نیز شروع شود. اگر در مورد شکستن پاراگراف مطمئن نیستید، نوشتار را به عنوان حامل ایده‌ها درنظر بگیرید. اگر در نقطه‌ای شکست پاراگراف دارید ولی ایدۀ قبلی هنوز ادامه دارد، شکست را باید از بین ببرید. اگر ایدۀ کاملاً جدیدی در یک خط وارد شده است، آنگاه باید یک شکست پاراگراف داشته باشید. بعضی از افراد به کلی اهمیت دانستن محل دقیق شکستن پاراگراف‌ها را نمی‌دانند. خیلی از افراد حتی مفهوم شکستن یک پاراگراف را نمی‌دانند، یا، به خصوص در لاتک، پاراگراف‌های جدید ایجاد می‌کنند بدون این که بدانند چنین کاری کرده‌اند. این اشتباه به خصوص اگر در متن فرمول وجود داشته باشد، بیشتر اتفاق می‌افتد. به مثال‌های زیر توجه کنید و سعی کنید دریابید که چرا گاهی اوقات خط خالی (شکست پاراگراف) قبل یا بعد از یک فرمول قرار می‌گیرد و گاهی اوقات قرار نمی‌گیرد. (اگر هنوز همهٔ فرمان‌های این مثال‌ها را متوجه نمی‌شوید، این فصل و فصل بعد را مطالعه کنید و دوباره این بخش را مرور کنید.) \begin{code} \begin{verbatim} % Example 1 \ldots when Einstein introduced his formula \begin{equation} e = m \cdot c^2 \; , \end{equation} which is at the same time the most widely known and the least well understood physical formula. % Example 2 \ldots from which follows Kirchhoff's current law: \begin{equation} \sum_{k=1}^{n} I_k = 0 \; . \end{equation} Kirchhoff's voltage law can be derived \ldots % Example 3 \ldots which has several advantages. \begin{equation} I_D = I_F - I_R \end{equation} is the core of a very different transistor model. \ldots \end{verbatim} \end{code} جملات، واحدهای کوچک‌تر متن هستند. در جملات انگلیسی فاصلهٔ بعد از یک نقطه پایان خط بیشتر از فاصلهٔ بعد از نقطه‌ای است که یک کلمه مخفف را تمام می‌کند. لاتک سعی می‌کند بفهمد کدام یک از این دو مورد نظر است. اگر لاتک اشتباه کرد، باید به او بگویید کدام یک مورد نظر است. روش این‌کار را در ادامهٔ این فصل خواهید دید. ساختار متن حتی به داخل جملات نیز رسوخ می‌کند. بسیاری از زبان‌ها دارای آیین نگارش پیچیده‌ای هستند، اما در بسیاری از زبان‌ها (مثلاً آلمانی و انگلیسی\footnote{مترجم: و صد البته فارسی})، ویرگول را می‌توان با به خاطر سپردن یک اصل ساده در محل درست قرار دهید: در محل‌هایی که متن دارای توقف کوچک است. اگر مطمئن نیستید در کجا ویرگول قرار دهید، جمله را با صدای بلند بخوانید و در هر نقطه‌ای که یک ویرگول دارید یک نفس کوتاه بگیرید. اگر از این کار احساس خوبی نداشتید آن ویرگول را حذف کنید؛ اگر در نقطه‌ای احساس نیاز به یک نفس تازه (یا یک توقف کوتاه) داشتید، در آن نقطه یک ویرگول وارد کنید. دست آخر این که پاراگراف‌ها را باید به‌طور منطقی در فصل‌ها، بخش‌ها، زیربخش‌ها، و غیره قرار دهید. با این وجود، تأثیر حروف‌چینی به صورت \begin{code} \verb|\section{The| \texttt{Structure of Text and Language}\verb|}| \end{code} آنقدر واضح است که تقریباً مشخص می‌کند این ساختاربندی چگونه انجام می‌شود. \section{شکستن خط و صفحه} \subsection{ترازش پاراگراف‌ها} کتاب‌ها معمولاً به این صورت حروف‌چینی می‌شوند که تمام خط‌ها دارای طول یکسان هستند. لاتک خط‌ها را به صورت مناسب می‌شکند \index{شکستن خط} و فاصلهٔ مناسب بین کلمات را رعایت می‌کند تا محتوای پاراگراف‌ها را بهینه کند. اگر لازم باشد حتی کلمات را در انتهای خط‌ها می‌شکند. این‌که پاراگراف‌ها چگونه حروف‌چینی می‌شوند بستگی به طبقهٔ نوشتار دارد. به طور نرمال اولین خط یک پاراگراف دارای تورفتگی است، و فاصلهٔ ویژه‌ای بین پاراگراف‌ها وجود ندارد. برای اطلاعات بیشتر به بخش \ref{parsp} %\LR{\hyperref[parsp]{2.3.6}} مراجعه کنید. در حالات ویژه ممکن است لازم باشد که لاتک را مجبور به شکستن یک خط کنیم. فرمان \begin{lscommand} \ci{\bs} \rl{یا} \ci{newline} \end{lscommand} \noindent یک خط جدید بدون شکستن پاراگراف شروع می‌کند. فرمان \begin{lscommand} \ci{\bs*} \end{lscommand} \noindent بعلاوه از ایجاد یک شکست صفحه بعد از شکست خط جلوگیری می‌کند. فرمان \begin{lscommand} \ci{newpage} \end{lscommand} \noindent یک صفحهٔ جدید را آغاز می‌کند. فرمان‌های \begin{lscommand} \ci{linebreak}\verb|[|\emph{n}\verb|]|, \ci{nolinebreak}\verb|[|\emph{n}\verb|]|, \ci{pagebreak}\verb|[|\emph{n}\verb|]|, \ci{nopagebreak}\verb|[|\emph{n}\verb|]| \end{lscommand} \noindent جاهایی را پیشنهاد می‌کنند که یک شکست باید یا نباید انجام شود. این فرمان‌ها به نویسنده امکان تغییر پارامتر \emph{n} را می‌دهند، که می‌تواند عددی بین صفر تا چهار باشد. با انتخاب \emph{n} کمتر از چهار به لاتک اجازه می‌دهید فرمان شما را در صورت خیلی بد بودن نتیجه اثر ندهد. این فرمان‌های \lr{``break''} را با فرمان‌های \lr{``new''} اشتباه نگیرید. حتی موقعی که از فرمان \lr{``break''} استفاده می‌کنید، لاتک سعی می‌کند طول خط و طول صفحه را گسترش دهد که این مطلب در بخش بعد توضیح داده شده است. این کار ممکن است فاصله‌های نامطلوب در نوشتار شما ایجاد کند. اگر واقعاً می‌خواهید یک خط جدید یا صفحهٔ جدید را شروع کنید آنگاه از فرمان مربوط به این کارها استفاده کنید. نام این فرمان‌ها را حدس بزنید! لاتک همواره سعی می‌کند بهترین شکست‌ خط‌های ممکن را ایجاد کند. اگر لاتک نتواند خط‌ها را طبق استانداردهای پیشرفته بشکند، این اجازه را به خط می‌دهد که از سمت راست به بیرون پاراگراف کشیده شود. در این حالت لاتک هشدار \lr{``\wi{\lr{overfull hbox}}''} را در زمان پردازش می‌دهد. این اتفاق وقتی رخ می‌دهد که لاتک مکان مناسبی برای شکستن کلمات در انتهای خط پیدا نکند.% \footnote{با وجود این که لاتک هشداری در مورد وقوع \lr{overfull hbox} می‌دهد، معمولاً آسان نیست که خط مورد نظر را پیدا کنیم. اگر از گزینه \texttt{draft} در \ci{documentclass} استفاده کنید، در حاشیهٔ سمت راست این خط‌ها یک نشان پهن سیاه‌ ایجاد می‌شود.} می‌توانید استاندارد‌های لاتک را با فرمان \ci{sloppy} کمی پایین بیاورید. این فرمان باعث ایجاد فاصله‌های بین کلمه‌ای طولانی می‌شود حتی اگر خروجی بهینه نباشد. در این حالت لاتک هشدار \lr{``\wi{\lr{underfull hbox}}''} را به کاربر می‌دهد. در اغلب اوقات نتیجه این کار خیلی جالب نیست. فرمان \ci{fussy} استاندارد‌های لاتک را به حالت پیش‌فرض برمی‌گرداند. \subsection{شکستن کلمات} \label{hyph} لاتک کلمات را در صورت لزوم می‌شکند. اگر الگوریتم شکستن کلمات نتواند مکان دقیقی برای شکستن کلمه پیدا کند، می‌توانید لاتک را در این راه یاری کنید. فرمان \begin{lscommand} \ci{hyphenation}\verb|{|\emph{word list}\verb|}| \end{lscommand} \noindent باعث می‌شود کلماتی که در لیست آمده است تنها در نقاط با علامت \lr{``-''} شکسته شود. آرگومان فرمان تنها باید شامل کلماتی باشد که از حروف علامت‌های عادی تشکیل شده باشد. راهنمایی شکستن کلمات برای یک زبان ویژه در حافظه باقی می‌ماند تا آن زبان فعال شود. این بدان معنی است که اگر فرمان شکستن را در سرآغاز نوشتار وارد کنید تنها زبان انگلیسی را مورد نظر قرار می‌دهد. اگر فرمان شکستن را بعد از \verb|\begin{document}| قرار دهید و از بسته‌ای مانند \pai{babel} استفاده کنید، آنگاه راهنمایی‌های شکستن کلمات برای زبانی که توسط \pai{babel} انتخاب شده است فعال می‌شود. مثال زیر به \lr{``hyphenation''} اجازه می‌دهد تا همانند \lr{``Hyphenation''} شکسته شود، و مانع از شکسته‌ شدن \lr{``FORTRAN''}، \lr{``Fortran''} و \lr{``fortran''} می‌شود. هیچ حرف یا نماد ویژه‌ای را نمی‌توان در آرگومان فرمان شکستن قرار داد. مثال: \begin{code} \verb|\hyphenation{FORTRAN Hy-phen-a-tion}| \end{code} فرمان \ci{-} یک پیشنهاد برای شکستن کلمه را ایجاد می‌کند. این نقطه تنها نقطه‌ای می‌شود که کلمه مجاز است در آنجا شکسته شود. این فرمان به ویژه برای کلماتی که دارای حرف ویژه‌ای هستند مفید است (مانند حروف لهجه‌ها)، زیرا لاتک این‌ کلمات را نمی‌تواند به‌طور خودکار بشکند. \begin{example} I think this is: su\-per\-cal\-% i\-frag\-i\-lis\-tic\-ex\-pi\-% al\-i\-do\-cious \end{example} چند کلمه را می‌توان در یک خط با فرمان زیر نگهداشت: \begin{lscommand} \ci{mbox}\verb|{|\emph{text}\verb|}| \end{lscommand} \noindent این فرمان باعث می‌شود آرگومان‌هایش تحت هر شرایطی در کنار هم قرار بگیرند. \begin{example} My phone number will change soon. It will be \mbox{0116 291 2319}. The parameter \mbox{\emph{filename}} should contain the name of the file. \end{example} \ci{fbox} مشابه \ci{mbox} است، با این تفاوت که کادری دور متن قرار می‌گیرد. \section{رشته‌های تعریف شده} در بعضی از مثال‌های صفحهٔ قبل، یک فرمان خیلی ساده برای حروف‌چینی رشته‌های ویژه را دیدید: \vspace{2ex} \noindent \begin{center} \begin{tabular}{rlll@{}} توضیح&مثال&فرمان\\ \hline زمان جاری & \lr{\latintoday} & \ci{today}\\ حروف‌چین مورد علاقهٔ شما & \lr{\TeX} &\ci{TeX}\\ عنوان بازی & \lr{\LaTeX} &\ci{LaTeX}\\ شکل کنونی& \lr{\LaTeXe} &\ci{LaTeXe} \\ \end{tabular} \end{center} \section{حروف و نمادهای ویژه} \subsection{علامت نقل قول} برای \wi{نقل‌‌ قول} {\it نباید} مانند ماشین تایپ از \verb|"| استفاده کنید %\romanindex{""@\texttt{""}} . برای انتشار از علامت دیگری برای این‌کار استفاده می‌شود. در لاتک، از دو علامت \lr{\textasciigrave}\Footnote{grave accent} برای شروع نقل‌ قول و از دو علامت \lr{\textquotesingle}\Footnote{vertical quote} برای پایان نقل‌ قول استفاده می‌شود. برای نقل‌ قول منفرد از یکی از این علامت‌ها استفاده می‌کنیم. \begin{example} ``Please press the `x' key.'' \end{example} می‌دانم که روش مناسبی نیست که از \lr{\textasciigrave} برای شروع نقل قول و از \lr{\textquotesingle} برای اتمام آن استفاده کرد. \subsection{فاصلهٔ کلمات و شکستن} لاتک چهار نوع فاصلهٔ بین کلمات را می‌شناسد. \romanindex{dash} سه تا از این فاصله‌ها را می‌توان با نوشتن چند دَش (خط تیره) پشت سر هم تولید کرد. علامت چهارم دش نیست و در حقیقت همان علامت منهای ریاضی است: \romanindex{-} \romanindex{--} \romanindex{---} \lr{\index{-@$-$}} \index{\lr{mathematical}!\lr{minus}} \begin{example} daughter-in-law, X-rated\\ pages 13--67\\ yes---or no? \\ $0$, $1$ and $-1$ \end{example} نام این دش‌ها این است: \lr{`-' \wi{\lr{hyphen}}}، \lr{`--' \wi{\lr{en-dash}}}، \lr{`---' \wi{\lr{em-dash}}} و \lr{`$-$' \wi{\lr{minus sign}}}. \subsection{\texorpdfstring{تیلدا ($\sim$)}{تیلدا}} \romanindex{www}\romanindex{URL}\romanindex{tilde} کاراکتری که معمولاً در صفحات وب ظاهر می‌شود علامت تیلدا است. برای تولید این کاراکتر در لاتک می‌توانید از \verb|\~| کمک بگیرد ولی حاصل آن \~{} است که دقیقاً آن چیزی نیست که می‌خواهید. به جای آن از روش زیر استفاده کنید: \begin{example} http://www.rich.edu/\~{}bush \\ http://www.clever.edu/$\sim$demo \end{example} \subsection{\texorpdfstring{اسلش (/)}{اسلش}} \index{اسلش} برای نمایش اسلش بین دو واژه، می‌توان به‌سادگی نوشت، برای نمونه \texttt{read/write}، ولی این کار باعث می‌شود لاتک هر دو واژه را چسبیده نمایش دهد. شکست واژه‌ها برای این دو واژه ناپویا می‌شود و ممکن است خطای «سرریز» دریافت کنید. برای رفع این مشکل \ci{slash} را بکار ببرید. برای نمونه بنویسید `\LR{\verb|read\slash write|}' که شکست کلمه‌ها را ممکن می‌کند. ولی `\texttt{/}' نرمال هنوز می‌تواند برای کسر و واحدها بکار رود، ب.ن.\ \texttt{5 MB/s}. \subsection{\texorpdfstring{علامت درجه ($\circ$)}{علامت درجه}} مثال زیر نشان می‌دهد چگونه می‌توان \wi{علامت درجه} \romanindex{degree symbol} را در لاتک نوشت: \begin{example} It's $-30\,^{\circ}\mathrm{C}$. I will soon start to super-conduct. \end{example} بستهٔ \pai{textcomp} علامت درجه را با فرمان \ci{textcelsius} نیز قابل دسترسی می‌کند. \subsection{\texorpdfstring{نماد واحد پول اروپا (\lr{\texteuro})}{نماد واحد پول اروپا}} این روزها نماد واحد پول اروپا بسیار به‌کار می‌رود. بیشتر قلم‌‌های کنونی دارای کاراکتر ویژه برای این نماد هستند. بعد از فراخوانی بستهٔ \pai{textcomp} در سرآغاز نوشتار \begin{lscommand} \ci{usepackage}\verb|{textcomp}| \end{lscommand} از فرمان \begin{lscommand} \ci{texteuro} \end{lscommand} برای نمایش این کاراکتر می‌توانید استفاده کنید. اگر قلم شما این نماد را ندارد یا از شکل آن خوشتان نمی‌آید، کارهای دیگری می‌توانید انجام دهید. ابتدا این که بستهٔ \pai{eurosym} نماد رسمی واحد پول اروپا را فراهم می‌کند: \begin{lscommand} \ci{usepackage}\verb|[|\lr{official}\verb|]{eurosym}| \end{lscommand} اگر نمادی را می‌پسندید که با قلم شما هم‌خوانی داشته باشد، از گزینهٔ \lr{\texttt{gen}} به جـــــــای \lr{\texttt{official}} استفاده کنید. %If the Adobe Eurofonts are installed on your system (they are available for %free from \url{ftp://ftp.adobe.com/pub/adobe/type/win/all}) you can use %either the package \pai{europs} and the command \ci{EUR} (for a Euro symbol %that matches the current font). % does not work % or the package % \pai{eurosans} and the command \ci{euro} (for the ``official Euro''). %The \pai{marvosym} package also provides many different symbols, including a %Euro, under the name \ci{EURtm}. Its disadvantage is that it does not provide %slanted and bold variants of the Euro symbol. \begin{table}[!htbp] \caption{کیسه‌ای پر از نماد اروپا} \label{eurosymb} \setLR \begin{lined}{10cm} \begin{tabular}{llccc} LM+textcomp &\verb+\texteuro+ & \huge\texteuro &\huge\sffamily\texteuro &\huge\ttfamily\texteuro\\ eurosym &\verb+\euro+ & \huge\officialeuro &\huge\sffamily\officialeuro &\huge\ttfamily\officialeuro\\ $[$gen$]$eurosym &\verb+\euro+ & \huge\geneuro &\huge\sffamily\geneuro &\huge\ttfamily\geneuro\\ %europs &\verb+\EUR + & \huge\EURtm &\huge\EURhv % &\huge\EURcr\\ %eurosans &\verb+\euro+ & \huge\EUROSANS &\huge\sffamily\EUROSANS % & \huge\ttfamily\EUROSANS \\ %marvosym &\verb+\EURtm+ & \huge\mvchr101 &\huge\mvchr101 % &\huge\mvchr101 \end{tabular} \medskip \end{lined} \setRL \end{table} \subsection{\texorpdfstring{سه نقطه ($\ldots$)}{سه‌نقطه}} بر روی ماشین تایپ، یک ویرگول یا یک فاصله دارای همان طول یک حرف هستند. در یک کتاب این کاراکترها تنها فضای کوچکی را اشغال می‌کنند. بنابراین سه نقطه را نمی‌توان تنها با نوشتن سه نقطه نشان داد. برای این منظور فرمان ویژه‌ای وجود دارد: \begin{lscommand} \ci{ldots} \end{lscommand} \lr{\index{...@\ldots}} \begin{example} Not like this ... but like this:\\ New York, Tokyo, Budapest, \ldots \end{example} \subsection{چسبیدگی حروف}\index{\lr{ligature}}\index{جیی@چسبیدگی} بعضی از کلمات تنها با قراردادن متوالی چند حرف بدست نمی‌آیند بلکه باید نمادهای ویژه‌ای برای نمایش آنها به کار برد. \begin{code} {\large \lr{ff fi fl ffi}\ldots}\quad \rl{به جای}\quad {\large \lr{f\mbox{}f f\mbox{}i f\mbox{}l f\mbox{}f\mbox{}i} \ldots} \end{code} چسبیدگی حروف را می‌توان با قراردادن یک \LRE{\ci{mbox}\verb|{}|} بین دو حرف مورد نظر از بین برد. این کار به عنوان مثال برای کلمه‌هایی لازم است که از ترکیب دو کلمه بدست می‌آیند. \begin{example} \Large Not shelfful\\ but shelf\mbox{}ful \end{example} \subsection{لهجه‌ها و حروف ویژه} لاتک استفاده از لهجه‌ها و حروف ویژه را به شکل‌های مختلف پشتیبانی می‌کند. جدول \ref{accents} %\LR{\hyperref[accents]{2.3}} تمام لهجه‌های مختلف را نشان می‌دهد که بر حرف \lr{o} قرار می‌گیرند. این کار برای حروف دیگر هم قابل انجام است. برای قراردادن یک لهجه بر روی حرفی مانند \lr{i} یا \lr{j} ابتدا باید نقطهٔ روی آن را حذف کرد. برای انجام این کار از \verb|\i| و \verb|\j| استفاده کنید. \begin{example} H\^otel, na\"\i ve, \'el\`eve,\\ sm\o rrebr\o d, !`Se\~norita!,\\ Sch\"onbrunner Schlo\ss{} Stra\ss e \end{example} \begin{table}[!hbp] \caption{لهجه‌ها و حروف ویژه} \label{accents} \begin{latin} \begin{lined}{10cm} \begin{tabular}{*4{cl}} \A{\`o} & \A{\'o} & \A{\^o} & \A{\~o} \\ \A{\=o} & \A{\.o} & \A{\"o} & \BB{\c}{c}\\[6pt] \BB{\u}{o} & \BB{\v}{o} & \BB{\H}{o} & \BB{\c}{o} \\ \BB{\d}{o} & \BB{\b}{o} & \BB{\t}{oo} \\[6pt] \A{\oe} & \A{\OE} & \A{\ae} & \A{\AE} \\ \A{\aa} & \A{\AA} \\[6pt] \A{\o} & \A{\O} & \A{\l} & \A{\L} \\ \A{\i} & \A{\j} & !` & \verb|!`| & ?` & \verb|?`| \end{tabular} \index{\lr{dotless \i{} and \j}}\index{\lr{Scandinavian letters}} \index{ae@\lr{\ae}}\index{\lr{umlaut}}\index{\lr{grave}}\index{\lr{acute}} \index{oe@\lr{\oe}}\index{aa@\lr{\aa}} \bigskip \end{lined} \end{latin} \end{table} \section{پشتیبانی زبان‌های دیگر} \index{زبان‌های دیگر} \subsection{گزینهٔ یونیکد} %\secby{Axel Kielhorn}{A.Kielhorn@web.de} اگر می‌خواهید نوشتاری از چندین زبان بنویسید، یونیکد راه آن است، به ویژه اگر این زبان‌ها از خط لاتین استفاده نکنند. دو موتور تک هستند که توانایی پردازش ورودی‌های یونیکد را دارند: \begin{description} \item[زیلاتک] برای سیستم مک گسترش یافت اما اکنون برای همهٔ سیستم‌ها در دسترس است. نخستین بار در تکلایو ۲۰۰۷ ارائه شد. \item[لواتک] نسخهٔ آیندهٔ پی‌دی‌اف‌تک است. نخستین بار در تکلایو ۲۰۰۸ ارائه شد. \end{description} نوشتهٔ زیر زیلاتک ارائه شده در تکلایو ۲۰۱۰ را توضیح می‌دهد. \subsubsection{زبان‌ها راست به چپ} بستهٔ \pai{xepersian}\index{xepersia} از زبان پارسی پشتیبانی می‌کند. این بسته دستورهای فارسی لاتک را فراهم می‌کند که به این ترتیب می‌توانید دستورهایی مانند \verb|\section| را به پارسی بکار ببرید، که این ویژگی برای پارسی زبانان جذاب است. \pai{xepersian} تنها بسته‌ای است که از کشیدگی حرف‌ها پشتیبانی می‌کند. بستهٔ همانندی برای زبان سریانی در حال گسترش است. قلم نستعلیق، که توسط شورای عالی اطلاع رسانی درست شده است، از تارنمای آنها دردسترس است \lr{\url{http://www.scict.ir/Portal/Home/Default.aspx}. } \section{فاصله بین کلمات} برای این که در خروجی، حاشیه سمت راست به صورت منظم ظاهر شود، لاتک فاصله مناسب بین کلمات ایجاد می‌کند تا خط را پر کنند. همچنین لاتک فاصلهٔ بیشتری را در انتهای یک خط قرار می‌دهد، زیرا این کار باعث خوانایی بهتر متن می‌شود. لاتک فرض می‌کند انتهای یک جمله نقطه، علامت سؤال یا تعجب است. اگر یک نقطه بعد از یک حرف بزرگ ظاهر شود، لاتک این نقطه را پایان یک خط نمی‌داند، زیرا معمولاً بعد از اسامی ویژه که با حروف بزرگ نوشته می‌شوند یک نقطه قرار می‌گیرد. هر فرض دیگری به غیر از اینها را نویسنده باید به لاتک اطلاع دهد. یک بک‌اسلش در جلوی یک فاصله، فاصله‌ای را تولید می‌کند که نمی‌تواند گسترش یابد. حرف تیلدا فاصله‌ای را تولید می‌کند که نمی‌تواند گسترش یابد و به‌علاوه از شکستن خط جلوگیری می‌کند. فرمان \verb|@| در جلوی یک نقطه بیان می‌کند که این نقطه انتهای یک خط است، حتی اگر این نقطه بعد از یک حرف بزرگ ظاهر شده باشد. \cih{"@} %\romanindex{~@ \verb.~.} \romanindex{tilde@tilde ( \verb.~.)} \romanindex{., space after} \begin{example} Mr.~Smith was happy to see her\\ cf.~Fig.~5\\ I like BASIC\@. What about you? \end{example} فاصلهٔ اضافی بعد از نقطه را می‌توان با فرمان زیر غیر فعال کرد \begin{lscommand} \ci{frenchspacing} \end{lscommand} \noindent که به لاتک می‌گوید بعد از نقطه فاصله‌ای بیشتر از فاصلهٔ بین کلمات قرار ندهد. این کار در اکثر زبان‌ها معمول است، به جز در هنگام نوشتن کتاب‌نامه. اگر از فرمان \ci{frenchspacin} استفاده کنید، فراخوانی فرمان \verb|\@| لازم نیست. \section{عنوان، فصل، و بخش} برای این که خواننده را به هنگام خواندن کار شما راهنمایی کنید، باید نوشتار خود را به فصل‌ها، بخش‌ها، و زیربخش‌ها تقسیم کنید. لاتک این کار را با اختصاص فرمان‌های ویژه‌ای امکان‌پذیر می‌کند که عنوان هر بخش را به عنوان آرگومان می‌پذیرند. این وظیفهٔ شماست که ترتیب آنها را درست بیان کنید. فرمان‌های زیر در طبقهٔ \lr{\texttt{article}} موجودند: \nopagebreak \begin{lscommand} \ci{section}\verb|{...}|\\ \ci{subsection}\verb|{...}|\\ \ci{subsubsection}\verb|{...}|\\ \ci{paragraph}\verb|{...}|\\ \ci{subparagraph}\verb|{...}| \end{lscommand} اگر می‌خواهید نوشتارتان را به قسمت‌هایی تقسیم کنید که شماره‌گذاری بخش‌ها و فصل‌ها را تغییر ندهد از فرمان \begin{lscommand} \ci{part}\verb|{...}| \end{lscommand} \noindent استفاده کنید. وقتی که از طبقه‌های \lr{\texttt{report}} و \lr{\texttt{book}} استفاده می‌کنید، فرمان \begin{lscommand} \ci{chapter}\verb|{...}| \end{lscommand} \noindent هم قابل استفاده است که هر فصل در برگیرندهٔ چندین بخش می‌تواند باشد. از آنجا که طبقهٔ \lr{\texttt{article}} فرمان \lr{\texttt{chapter}} را نمی‌شناسد، قرار دادن یک مقاله به عنوان یک فصل از یک کتاب بسیار آسان است. فاصلهٔ بین بخش‌ها، و شماره‌گذاری‌ آنها و همچنین اندازهٔ قلم عنوان‌ها به طور خودکار توسط لاتک تعیین می‌شود. دو فرمان از این دسته فرمان‌ها دارای ویژگی‌هایی هستند که در زیر به آنها اشاره شده است: \begin{itemize} \item فرمان \ci{part} شماره‌گذاری مسلسل فصل‌ها را تغییر نمی‌دهد. \item فرمان \ci{appendix} هیچ آرگومانی را نمی‌پذیرد. این فرمان تنها شماره‌گذاری فصل‌ها را به صورت حرفی تغییر می‌دهد.% \footnote{در طبقهٔ مقاله، این فرمان شماره‌گذاری بخش‌ها را حرفی می‌کند.} \end{itemize} لاتک فهرست مطالب را با قراردادن عنوان بخش‌ها و صفحهٔ مربوط به آنها که از آخرین پردازش بدست آمده است تولید می‌کند. فرمان \begin{lscommand} \ci{tableofcontents} \end{lscommand} \noindent هر جا که ظاهر شود باعث نمایش فهرست مطالب در همان نقطه می‌شود. یک نوشتار جدید باید دوبار پردازش شود تا \ci{tableofcontents} به صورت درست درج گردد. گاهی اوقات لازم است فایل را سه‌بار پردازش کنید، لاتک در این مورد به شما پیغام مناسب را می‌دهد. تمام فرمان‌های بخش‌بندی که در بالا ذکر شد دارای حالت ستاره‌دار نیز می‌باشند. حالت ستاره‌دار این فرمان‌ها به راحتی با افزودن یک علامت \verb|*| به انتهای نام فرمان درست می‌شود. این فرمان‌ها باعث تولید بخش مربوطه می‌شوند با این تفاوت که شماره‌دار نیستند و در فهرست مطالب ظاهر نمی‌شوند. برای این کار، به عنوان مثال به جای فرمان \verb|\section{Help}| باید از فرمان \verb|\section*{Help}| استفاده کنید. عنوان بخش‌ها به طور نرمال در فهرست مطالب ظاهر می‌شوند. گاهی اوقات این کار امکان‌\-پذیر نیست زیرا عنوان بخش طولانی است و در یک خط جا نمی‌شود. در این صورت می‌توان عنوانی را که در فهرست مطالب ظاهر می‌شود با یک گزینهٔ انتخابی در جلوی عنوان واقعی تعیین کرد. \begin{code} \verb|\chapter[Title for the table of contents]{A long|\\ \verb| and especially boring title, shown in the text}| \end{code} عنوان کلی نوشتار با فرمان \begin{lscommand} \ci{maketitle} \end{lscommand} \noindent چاپ می‌شود. محتویات عنوان نوشتار را می‌توان با فرمان‌های زیر قبل از فرمان \verb|\maketitle| تعیین کرد: \begin{lscommand} \ci{title}\verb|{...}|\lr{,} \ci{author}\verb|{...}| \lr{,} \ci{date}\verb|{...}| \end{lscommand} \noindent در آرگومان فرمان \ci{author} می‌توانید چندین نام را وارد کنید که با فرمان \lr{\ci{and}} از یکدیگر جدا می‌شوند. مثالی از فرمان‌هایی را که در بالا معرفی کردیم می‌توانید در جدول \ref{document} %\LR{\hyperref[document]{2.2}} در صفحهٔ \pageref{document} ببینید. علاوه بر فرمان‌های بخش‌بندی که در بالا اشاره شد، لاتک سه فرمان دیگر به همراه طبقهٔ \verb|book| ارائه می‌کند. این فرمان‌ها برای تقسیم نوشتار به کار می‌آیند. این فرمان‌ها سربرگ و شمارهٔ صفحه را در یک کتاب تغییر می‌دهند: \begin{description} \item[\ci{frontmatter}] باید اولین فرمان بعد از شروع متن نوشتار باشد (\verb|\begin{document}|). این فرمان شمارهٔ صفحه‌ها را به اعداد لاتین تغییر می‌دهد و بخش‌ها را بدون شماره ظاهر می‌کند. رفتار این فرمان روی بخش‌بندی‌ها همانند این است که از فرمان‌های بخش‌بندی ستاره‌دار استفاده کنید (به عنوان مثال \verb|\chapter*{Preface}|) با این تفاوت که عنوان این بخش‌ها همچنان در فهرست مطالب ظاهر می‌شوند. \item[\ci{mainmatter}] این فرمان دقیقاً قبل از اعلان اولین فصل به کار می‌رود که باعث می‌شود شمارهٔ صفحه به سبک عددی تغییر یابد و آن را از یـک شروع می‌کند. \item[\ci{appendix}] پیوست‌های نوشتار را شروع می‌کند. بعد از این فرمان، فصل‌ها با حروف شماره‌\-گذاری می‌شوند. \item[\ci{backmatter}] باید قبل از آخرین آیتم کتاب، مانند کتاب‌نامه و نمایه ظاهر شود. در یک طبقهٔ استاندارد، این فرمان هیچ تاثیری ندارد. \end{description} \section{ارجاع} در کتاب‌ها، گزارش‌ها، و مقالات معمولاً ارجاع‌هایی مانند شکل‌ها، جدول‌ها و قسمت‌های ویژه از متن وجود دارد که به آنها \wi{ارجاع‌های متنی}\Footnote{cross-references} می‌گویند. لاتک فرمان‌های زیر را برای تولید ارجاع‌های متنی ارائه می‌کند \begin{lscommand} \ci{label}\verb|{|\emph{marker}\verb|}|, \ci{ref}\verb|{|\emph{marker}\verb|}| \rl{و} \ci{pageref}\verb|{|\emph{marker}\verb|}| \end{lscommand} \noindent که \emph{marker} یک نشانگر است که توسط کاربر انتخاب می‌شود. لاتک تمام فرمان‌های \verb|\ref| را با شمارهٔ بخش، زیربخش، شکل، جدول، یا قضیه‌ای نمایش می‌دهد که فرمان \verb|\label| در آن ظاهر شده است. فرمان \verb|\pageref| شمارهٔ صفحه‌ای را نمایش می‌دهد که \verb|\label| مورد نظر قرار دارد.% \footnote{توجه داشته باشید که این فرمان‌ها از محتوای چیزی که به آن ارجاع می‌کنند اطلاعی ندارند. فرمان \ci{label}تنها آخرین شمارهٔ تولید شده را ذخیره می‌کند. وقتی که این شماره، شمارهٔ یک بخش باشد شمارهٔ مورد نظر از پردازش قبل را ذخیره می‌کند.} \begin{example} A reference to this subsection \label{sec:this} looks like: ``see section~\ref{sec:this} on page~\pageref{sec:this}.'' \end{example} \section{پانوشت} با فرمان \begin{lscommand} \ci{footnote}\verb|{|\emph{footnote text}\verb|}| \end{lscommand} \noindent پانوشتی در انتهای صفحهٔ جاری نوشته می‌شود. پانوشت‌ها همواره باید بعد از کلمه یا جمله‌ای قرار داده شود\footnote{فعل شدن یکی از افعال معمول فارسی است.} که به آن اشاره می‌کند. بنابراین پانوشتی که به کل یک عبارت اشاره می‌کند باید بعد از ویرگول یا نقطهٔ انتهای آن جمله قرار داده شود. با توجه به این که هر کسی که نوشتار را می‌خواند نهایتاً پانوشت‌ها را هم مطالعه می‌کند (زیرا که ما موجودات کنجکاوی هستیم) پس چرا تمام مطالب را در خود متن بیان نکنیم؟% \footnote{تو که لالایی بلدی پس چرا خوابت نمی‌بره(\lr{-}:} \begin{latin} \begin{example} Footnotes\footnote{This is a footnote.} are often used by people using \LaTeX. \end{example} \end{latin} \section{تاکید کلمات} اگر با یک ماشین تایپ متنی را بنویسید، کلمات مهم به صورت \underline{زیرخط} تایپ می‌شوند. \begin{lscommand} \ci{underline}\verb|{|\emph{text}\verb|}| \end{lscommand} در کتاب‌های تایپ شده، کلمه‌های مهم را به صورت ایتالیک نمایش می‌دهند. لاتک فرمان \begin{lscommand} \ci{emph}\verb|{|\emph{text}\verb|}| \end{lscommand} \noindent را برای تأکید کلمه‌ها به کار می‌برد. تأثیر فرمان به متن بستگی دارد: \begin{example} \emph{If you use emphasizing inside a piece of emphasized text, then \LaTeX{} uses the \emph{normal} font for emphasizing.} \end{example} لطفاً به تفاوت این که لاتک چیزی را تأکید کند و یا این که از قلم دیگری استفاده کنیم توجه کنید. \begin{example} \textit{You can also \emph{emphasize} text if it is set in italics,} \textsf{in a \emph{sans-serif} font,} \texttt{or in \emph{typewriter} style.} \end{example} \section{محیط‌ها} \label{env} لاتک \wi{محیط‌}های مختلفی را برای کارهای مختلف ارائه می‌کند: \begin{lscommand} \ci{begin}\verb|{|\emph{environment}\verb|}|\quad \emph{text}\quad \ci{end}\verb|{|\emph{environment}\verb|}| \end{lscommand} \noindent که \emph{environment} نام محیطی است که مورد استفاده قرار می‌گیرد. محیط‌ها می‌توانند تودرتو باشند، مادامی که ترتیب درست آنها اعمال شده باشد. \begin{code} \verb|\begin{aaa}...\begin{bbb}...\end{bbb}...\end{aaa}| \end{code} \noindent در بخش بعد انواع محیط‌ها را مورد بررسی قرار می‌دهیم. \subsection{محیط‌های تبصره، توضیح، و شماره‌دار} محیط \ei{itemize} برای تولید لیست‌های ساده مفید است، \ei{enumerate} برای تولید لیست‌های شماره‌دار، و \ei{description} برای محیط توضیحات مفید است. \cih{item} \begin{example} \flushleft \begin{enumerate} \item You can mix the list environments to your taste: \begin{itemize} \item But it might start to look silly. \item[-] With a dash. \end{itemize} \item Therefore remember: \begin{description} \item[Stupid] things will not become smart because they are in a list. \item[Smart] things, though, can be presented beautifully in a list. \end{description} \end{enumerate} \end{example} \subsection{چپ، راست، و وسط چین} محیط‌های \ei{flushleft} و \ei{flushright} پاراگراف‌هایی را تولید می‌کنند که چپ‌چین یا راست‌\-چین هستند. \romanindex{left aligned}\index{جیی@چپ‌چین} محیط \ei{center} متن را وسط‌چین می‌نویسد. اگر شکست خط را با فرمان \ci{\bs} اعلان نکنید، لاتک به صورت خودکار شکست خط‌ها را تعیین می‌کند. \begin{example} \begin{flushleft} This text is\\ left-aligned. \LaTeX{} is not trying to make each line the same length. \end{flushleft} \end{example} \begin{example} \begin{flushright} This text is right-\\aligned. \LaTeX{} is not trying to make each line the same length. \end{flushright} \end{example} \begin{example} \begin{center} At the centre\\of the earth \end{center} \end{example} \subsection{نقل قول و شعر} محیط \ei{quote} برای عبارت‌های نقل‌ قول و مثال‌ها مفید است. \begin{example} A typographical rule of thumb for the line length is: \begin{quote} On average, no line should be longer than 66 characters. \end{quote} This is why \LaTeX{} pages have such large borders by default and also why multicolumn print is used in newspapers. \end{example} دو محیط مشابه دیگر وجود دارد: محیط \ei{quotation} و \ei{verse}. محیط \lr{\texttt{quotation}} برای نقل‌ قول‌های طولانی که بیش از یک پاراگراف باشند مفید است. محیط \lr{\texttt{verse}} برای نگارش شعر مفید است که شکست‌ها خیلی مهم هستند. در این محیط شکست‌ها با فرمان \ci{\bs} در انتهای خط مورد نظر و یک خط خالی بعد از هر قطعه انجام می‌گیرد. \begin{example} I know only one English poem by heart. It is about Humpty Dumpty. \begin{flushleft} \begin{verse} Humpty Dumpty sat on a wall:\\ Humpty Dumpty had a great fall.\\ All the King's horses and all the King's men\\ Couldn't put Humpty together again. \end{verse} \end{flushleft} \end{example} \subsection{مقدمه} در مطالب علمی معمولاً نوشتار را با یک چکیده شروع می‌کنند. لاتک محیط \ei{abstract} را برای انجام چنین کاری پیش‌بینی کرده است. به طور نرمال یک چکیده در مقالات به کار می‌رود. \newenvironment{abstract}% {\begin{center}\begin{small}\begin{minipage}{0.8\textwidth}}% {\end{minipage}\end{small}\end{center}} \begin{example} \begin{abstract} The abstract abstract. \end{abstract} \end{example} \subsection{چاپ تحت‌اللفظ} متن‌هایی که بین \LRE{\verb|\begin{|\ei{verbatim}\verb|}|} و \verb|\end{verbatim}| نوشته می‌شوند، همانند این که با ماشین تایپ نوشته شده باشند ظاهر می‌شوند، با تمام شکست خط‌ها و بدون تأثیر هیچ فرمان لاتک. برای یک پاراگراف این کار را می‌توان به صورت زیر انجام داد. \begin{lscommand} \ci{verb}\verb|+|\emph{text}\verb|+| \end{lscommand} \noindent \verb|+| تنها یک مثال از یک کاراکتر حائل است. بسیاری از مثال‌های این مقدمه به کمک همین محیط نوشته شده‌اند. \begin{example} The \verb|\ldots| command \ldots \begin{verbatim} 10 PRINT "HELLO WORLD "; 20 GOTO 10 \end{verbatim} \end{example} \begin{example} \begin{verbatim*} the starred version of the verbatim environment emphasizes the spaces in the text \end{verbatim*} \end{example} فرمان \ci{verb} را می‌توان به صورت ستاره‌دار به‌کار برد: \begin{example} \verb*|like this :-) | \end{example} محیط \lr{\texttt{verbatim}} و فرمان \verb|\verb| را نمی‌توان به صورت پارامتر فرمان‌های دیگر به کار برد. \subsection{جدول} \newcommand{\mfr}[1]{\lr{\framebox{\rule{0pt}{0.7em}\texttt{#1}}}} محیط \ei{tabular} را می‌توان برای طراحی جدول‌های زیبا با خط‌های افقی و عمودی به کار برد. لاتک عرض ستون‌ها را به صورت خودکار تشخیص می‌دهد. آرگومان \emph{table spec} از فرمان \begin{lscommand} \verb|\begin{tabular}[|\emph{pos}\verb|]{|\emph{table spec}\verb|}| \end{lscommand} \noindent سبک‌ جدول را تعریف می‌کند. از \mfr{l} برای یک ستون چپ‌چین، \mfr{r} برای راست‌چین، \mfr{c} برای وسط‌چین استفاده کنید؛ از \mfr{p\{\emph{width}\}} برای یک ستون شامل یک متن چیده شده با شکست خط، و \mfr{l} برای یک خط عمودی استفاده کنید. اگر متن درون یک ستون گسترده‌‌تر از صفحه باشد، لاتک آن را به طور خودکار نمی‌شکند. با استفاده از فرمان \mfr{p\{\emph{width}\}} می‌توانید نوع ویژه‌ای از ستون را تعریف کنید که پیرامون یک متن مشخص شده گرد شده است. آرگومان \emph{pos} مکان عمودی جدول را نسبت به خط کرسی متنی دور آن تعیین می‌کند. از یکی از گزینه‌های \mfr{t}،\mfr{b}،\mfr{c} برای تعیین این مقدار به بالا، پایین و وسط استفاده کنید. در یک محیط \lr{\texttt{tabular}}، با درج \texttt{\&} به ستون بعد می‌رویم و \ \ci{\bs} یک خط جدید را شروع می‌کند و \ci{hline} یک خط افقی رسم می‌کند. می‌توانید خط را از ستون \lr{-j}ام تا ستون \lr{-i}ام با فرمان \lr{\ci{cline}\texttt{\{}\emph{j}\texttt{-}\emph{i}\texttt{\}}} رسم کنید. %\romanindex{"|@ \verb."|.} \begin{example} \begin{tabular}{|r|l|} \hline 7C0 & hexadecimal \\ 3700 & octal \\ \cline{2-2} 11111000000 & binary \\ \hline \hline 1984 & decimal \\ \hline \end{tabular} \end{example} \begin{example} \begin{tabular}{|p{4.7cm}|} \hline Welcome to Boxy's paragraph. We sincerely hope you'll all enjoy the show.\\ \hline \end{tabular} \end{example} جداکنندهٔ ستون‌ها را می‌توان با \mfr{@\{...\}} ساخت. این فرمان فاصلهٔ بین ستون‌ها را از بین می‌برد و به جای آن از چیزی استفاده می‌کند که در آکولاد ارائه کرده‌اید. مورد معمول استفاده از این فرمان در چیدن بر اساس ممیز است. کاربرد دیگر آن از بین بردن فاصلهٔ بالایی یک جدول با استفاده از فرمان \mfr{@\{\}} است. \begin{example} \begin{tabular}{@{} l @{}} \hline no leading space\\ \hline \end{tabular} \end{example} \begin{example} \begin{tabular}{l} \hline leading space left and right\\ \hline \end{tabular} \end{example} % % This part by Mike Ressler % \romanindex{decimal alignment} از آنجا که هیچ راه درونی برای مرتب کردن اعداد در یک جدول به صورت ممیزچین وجود ندارد \footnote{اگر کلاف ابزار روی سیستم شما نصب است، نگاهی به بستهٔ \pai{dcolumn} بیندازید.} این کار را می‌توان با یک حقه و داشتن دو ستون انجام داد: یکی به صورت راست‌چین، و دیگری به صورت عدد اعشاری چپ‌چین. فرمان \verb|@{.}| در خط‌های محیط \verb|\begin{tabular}| فاصلهٔ عادی بین ستون‌ها را تنها با یک نقطه نشان می‌دهد که نماد معمولی ممیز است. فراموش نکنید که باید قسمت اعشاری عددتان را با فرمان \verb|&| از قسمت درست آن جدا کنید. برچسب یک ستون را می‌توان با فرمان \ci{multicolumn} تعیین کنید. \begin{example} \begin{tabular}{c r @{.} l} Pi expression & \multicolumn{2}{c}{Value} \\ \hline $\pi$ & 3&1416 \\ $\pi^{\pi}$ & 36&46 \\ $(\pi^{\pi})^{\pi}$ & 80662&7 \\ \end{tabular} \end{example} \begin{example} \begin{tabular}{|c|c|} \hline \multicolumn{2}{|c|}{Ene} \\ \hline Mene & Muh! \\ \hline \end{tabular} \end{example} تمام متن یک جدول همواره در یک صفحه قرار می‌گیرد. اگر می‌خواهید جدول‌های بزرگتری را طراحی کنید، باید از محیط \pai{longtable} استفاده کنید. \section{اجسام شناور} امروزه بسیاری از چیز‌هایی که به چاپ می‌رسند دارای تعداد زیادی جدول و شکل هستند. این اشیاء به حفاظت بیشتری احتیاج دارند، زیرا نمی‌توانند بین صفحه‌ها شکسته شوند. یک روش برای این کار این است که هرگاه یک جدول یا شکل آنقدر بزرگ باشد که در ادامهٔ صفحه جا نگیرد، آنگاه یک صفحهٔ جدید برای نمایش آن تولید شود. این کار باعث می‌شود که تعدادی از صفحات خالی باشند که بسیار بد منظره است. راه حل این مشکل این است که شکل‌ها و جدول‌هایی را که در صفحه نمی‌گنجند به ابتدای صفحهٔ بعد منتقل کنیم، و ادامه صفحهٔ اول را با متن پرکنیم. لاتک دو محیط برای حفاظت این گونه اجسام شناور تعبیه کرده است؛ یکی برای جدول و یکی برای شکل. برای استفاده بهینه از این دو محیط باید به طور تقریبی بدانید لاتک در درون خودش با اجسام شناور چگونه رفتار می‌کند. در غیر این صورت این موضوع یک معضل برای شما می‌شود زیرا لاتک هیچگاه این اجسام را در نقطه‌ای که شما می‌خواهید قرار نمی‌دهد. \romanindex{floating bodies}\index{اجسام شناور} \bigskip ابتدا اجازه دهید به فرمان‌هایی که برای اجسام شناور تعبیه شده‌اند نظری بیندازیم: هر چیزی که در میان محیط \ei{figure} و \ei{table} قرار می‌گیرد به عنوان یک شییٔ شناور منظور می‌شود. هر دو محیط شناور \begin{lscommand} \verb|\begin{figure}[|\emph{placement specifier}\verb|]| \rl{یا} \verb|\begin{table}[|\ldots\verb|]| \end{lscommand} \noindent پارامترهای اختیاری قبول می‌کنند که به آن مشخص کننده مکان% \Footnote{placement specifier} می‌گوییم. این پارامتر برای نشان دادن مکان مورد نظر برای جسم شناور به‌کار می‌رود. این پارامتر به صورت یک رشته از مکان‌های ممکن تعیین می‌شود. جدول \ref{tab:permiss} %\LRE{\hyperref[tab:permiss]{3.3}} را ببینید. % \begin{table}[!bp] \caption{پارامترهای قراردادن اجسام شناور}\label{tab:permiss} \noindent \begin{minipage}{\textwidth} \medskip \begin{center} \begin{tabular}{@{}cp{8cm}@{}} \lr{Spec}&اجازهٔ قرار دادن جسم \ldots\\ \hline \rule{0pt}{1.05em}\texttt{h} & اینجا (\emph{here}) در همان جایی از متن که فرمان ظاهر شده است. برای اجسام کوچک مفید است. \\[0.3ex] \texttt{t} & در بالای (\emph{top}) صفحه. \\[0.3ex] \texttt{b} & در پایین (\emph{bottom}) صفحه. \\[0.3ex] \texttt{p} & در یک صفحهٔ ویژه که تنها شامل اجسام شناور است. \\[0.3ex] \texttt{!} & بدون در نظر گرفتن بسیاری از پارامترهای داخلی\footnote{مانند ماکسیمم تعداد اشیاء شناور در یک صفحه} \end{tabular} \end{center} \end{minipage} \end{table} % یک جدول را می‌توان به صورت زیر تولید کرد: \begin{code} \verb|\begin{table}[!hbp]| \end{code} \noindent مشخص کنندهٔ مکان \verb|[!hbp]| به لاتک اجازه می‌دهد که جدول را در همان نقطه یا در پایین صفحه و یا در یک صفحه شامل تنها اشیاء شناور قرار دهد، و یا حتی در هر کدام که ممکن است با وجود این که ممکن است حاصل کار زیبا نباشد. اگر هیچ مکانی معرفی نگردد مقدار پیش‌فرض آن \verb|[tbp]| است. لاتک هر جسم شناور را همان جایی که کاربر فرمان داده است قرار می‌دهد. اگر این کار در صفحهٔ جاری امکان‌پذیر نباشد، لاتک آن را به صف نوع جسم شناور انتقال می‌دهد.% \footnote{این صف‌ها به شکل اولین ورودی --- اولین خروجی ظاهر می‌شوند!} هرگاه یک صفحهٔ جدید شروع می‌شود، لاتک ابتدا بررسی می‌کند که آیا جسم شناوری در صف انتظار برای الصاق موجود است. اگر این کار امکان‌پذیر نباشد، با هر جسم در صف مربوط به خودش به ترتیبی رفتار می‌شود که انگار در همین نقطه از متن طبق راهنمایی نویسنده قرار است قرار داده شود (به جز \lr{\texttt{h}} که دیگر مورد نظر قرار نمی‌گیرد ). هر جسم دیگر در متن به مکان مناسب در صف مربوطه انتقال می‌یابد. لاتک به طور منظم ترتیب اولیهٔ هر جسم در صف را مد نظر قرار می‌دهد. به همین دلیل است که اگر شکلی قابل ظاهر شدن در متن نباشد به انتهای نوشتار انتقال داده می‌شود و بنابراین تمام شکل‌های بعد از آن نیز به انتهای نوشتار انتقال می‌یابند. بنابراین: \begin{quote} اگر لاتک اجسام شناور را آن طور که شما می‌خواهید قرار نمی‌دهد اغلب به این دلیل است که تنها یکی از این اجسام را نمی‌تواند در هیچ نقطه‌ای از متن قرار دهد. \end{quote} وقتی که تنها یک مکان مناسب برای جسم وجود داشته باشد، این موضوع ممکن است مشکل‌\-ساز شود. اگر جسمی در مکان پیشنهاد شده قابل نمایش نباشد، معمولاً یک مشکل از این نوع پدید می‌آید. به خصوص این که هیچ‌گاه نباید از گزینهٔ \lr{[h]} استفاده کنید، این کار آنقدر مشکل‌\-ساز است که در نسخه‌های جدید لاتک این گزینه به طور خودکار به \lr{[ht]} تبدیل می‌شود. %\bigskip \noindent حال که مشکلات محیط‌های جدول و شکل را کمی توضیح دادیم، چند موضوع دیگر نیز نیاز به توضیح بیشتر دارند. با فرمان \begin{lscommand} \ci{caption}\verb|{|\emph{caption text}\verb|}| \end{lscommand} \noindent می‌توانید عنوان یک جسم شناور را تعریف کنید. یک شماره و یک عنوان شکل یا جدول به طور خودکار توسط لاتک قبل از این عنوان قرار می‌گیرد. دو فرمان \begin{lscommand} \ci{listoffigures} \rl{و} \ci{listoftables} \end{lscommand} \noindent همانند فرمان \verb|\tableofcontents| لیست جدول‌ها و شکل‌ها را چاپ می‌کند. این لیست‌ها عنوان کامل شییٔ مورد نظر را نمایش می‌دهند، بنابراین اگر عنوان این شکل‌ها طولانی است، باید عنوان کوچکتری را به عنوان گزینهٔ اختیاری معرفی کنید. این کار به صورت زیر امکان‌پذیر است. \begin{code} \verb|\caption[Short]{LLLLLoooooonnnnnggggg}| \end{code} با فرمان \ci{label} و \ci{ref} می‌توانید ارجاعی به این اجسام شناور داشته باشید. توجه داشته باشید که فرمان \ci{label} باید بعد از فرمان \ci{caption} قرار بگیرد زیرا باید شماره مربوطه با این فرمان دوم تولید شده باشد. مثال زیر مربعی را رسم می‌کند و آن را در متن قرار می‌دهد. می‌توانید از این کار برای اختصاص یک تصویر با ابعاد مشخص در پایان کار استفاده کنید. \begin{code} \begin{verbatim} Figure~\ref{white} is an example of Pop-Art. \begin{figure}[!hbtp] \makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}} \caption{Five by Five in Centimetres.\label{white}}[A \end{figure} \end{verbatim} \end{code} \noindent در مثال بالا، لاتک به سختی (!) سعی می‌کند تا شکل را دقیقاً در همین نقطه از متن قرار دهد.% \footnote{فرض کنید صف مربوط به شکل‌ها خالی باشد.} اگر این کار امکان‌پذیر نباشد سعی می‌کند شکل را در انتهای صفحه قرار دهد. اگر هیچ‌کدام از این کارها امکان‌پذیر نباشد، لاتک بررسی می‌کند که آیا می‌تواند شکل را در یک صفحهٔ خالی به همراه مثلاً یک جدول قرار دهد. اگر محتویات لازم برای پرکردن یک صفحهٔ شناور موجود نباشد، لاتک یک صفحهٔ جدید تولید می‌کند و یک‌بار دیگر همین مراحل را از سر می‌گیرد. تحت شرایط ویژه‌ای اگر لازم باشد از فرمان \begin{lscommand} \ci{clearpage} \rl{یا} \ci{cleardoublepage} \end{lscommand} \noindent استفاده کنید. این فرمان لاتک را مجبور می‌کند تا تمام اشیاء باقیمانده در صف را قرار دهد و یک صفحهٔ جدید تولید کند. فرمان \ci{cleardoublepage} به صفحهٔ سمت راست بعدی می‌رود. بعداً در این مقدمه یاد خواهید گرفت چگونه شکل‌های پست‌اسکریپت را در متن خود قرار دهید. \section{حفاظت از اجسام شکستنی} متنی که توسط فرمان‌های \ci{caption} و \ci{section} در متن ظاهر می‌شود ممکن است در نوشتار چندین بار تکرار شود (به عنوان مثال در فهرست مطالب یا متن نوشتار). بعضی از فرمان‌ها هنگام استفاده در درون فرمان‌هایی مانند \ci{section} ممکن است شکسته شوند و پردازش فایل میسر نباشد. این فرمان‌ها را \wi{فرمان‌های شکستنی} می‌نامند، به عنوان مثال \ci{footnote} و \ci{phantom}. این فرمان‌های شکستنی احتیاج به حفاظت دارند (ما چطور!). می‌توانید آنها را با فرمان \ci{protect} در جلوی آنها مورد حفاظت قرار دهیم. \ci{protect} تنها بر فرمانی که بعد از آن ظاهر می‌شود اثر دارد، و حتی بر پارامترهای آن تاثیری ندارد. در بیشتر مواقع یک فرمان اضافی \ci{protect} هیچ ضرری ندارد. \begin{code} \verb|\section{I am considerate|\\ \verb| \protect\footnote{and protect my footnotes}}| \end{code} % Local Variables: % TeX-master: "lshort2e" % mode: latex % mode: flyspell % End: