\chapter{معرفی سیستم حروف‌چینی علمی \lr{\TeX}} \section{مقدمه} نرم‌افزار (یا به بیان دقیق‌تر زبان برنامه‌نویسی) حروف‌چینی \TeX\footnote{تلفظ این کلمه به صورت «تِک» است. البته در برخی زبان‌ها با «تِخ» نیز تلفظ می‌شود.} یکی از نرم‌افزارهای معروف حروف‌چینی متون علمی است که با توجه به قابلیت‌های متعدد آن؛ امروزه در سطح وسیعی مخصوصاً در مجلات و کتب ریاضی و فنی مهندسی، جهت حروف‌چینی مجلات و کتب استفاده می‌شود. در این متن مختصر بر آنیم که این سیستم را معرفی نموده و قابلیت‌های آن را به صورت موجز بیاوریم تا با توجه به این که بسیاری از مجلات مخصوصاً در علوم پایه و فنی مهندسی، درخواست تایپ و ارسال مقالات با این سیستم را دارند، مورد استفاده محققین قرار گیرد. در اواخر دهۀ 1970 میلادی هنگامی که دونالد کانوث\footnote{\lr{Donald Knuth}} مشغول آماده‌سازی نسخه نهایی کتاب معروفش با عنوان «هنر برنامه‌نویسی کامپیوتر» بود، اولین نمونه‌های متن تایپ شده را از ناشر دریافت کرد در حالی که کیفیت آن بسیار پایین‌تر از انتظارات او بود، زیرا تکنولوژی مونوتایپ به طور وسیعی با تکنیک‌های فتوکپی جایگزین شده بود و فونت‌های اصلی برای آن در دسترس نبود. در همان حوالی، او کتابی را دید که به صورت دیجیتالی تولید شده بود و در نهایت این ایده به ذهن او رسید که حروف‌چینی به معنی چیدن صفر و یک‌ها (وجود یا عدم وجود جوهر) است. لذا با خود گفت به عنوان یک دانشمند علوم کامپیوتر، باید قادر باشم کاری در این خصوص انجام دهم. یک سال بعد از آن، او به انجمن ریاضی آمریکا دعوت شد تا یکی از سخنرانی‌های مدعو را در جلسه سالیانۀ آنها داشته باشد و در این جلسه او تصمیم گرفت در خصوص علوم کامپیوتر در خدمت ریاضی صحبت کند. موضوع سخنرانی او روی کار جدید او در \TeX\ (برای حروف‌چینی) و متافونت (برای توسعۀ فونت‌ها برای استفاده در \TeX) بود. هرچند در آن زمان \TeX\ بیشتر به یک پروژه تحقیقاتی نزدیک بود تا یک محصول قوی صنعتی، اما دارای خواص جذاب زیر بود: \begin{itemize} \item جهت‌گیری اصلی آن این بود که مستقیماً توسط نویسندگان استفاده شود که دقیقاً می‌دانند در مورد چه چیزی می‌نویسند، \item از یک مرجع دانشگاهی بود و لذا انتظار بود که به صورت رایگان عرضه شود، \item توسعۀ آن به صورتی بود که روی هر سیستم کامپیوتری با هر سیستم‌عامل قابل استفاده و حمل باشد، یعنی روی هر ماشین یک خروجی را تولید کند. \item سایر برنامه‌های در آن زمان برای حروف‌چینی متون ریاضی، دارای مالک، خیلی گران‌قیمت، اغلب برای سخت‌افزارهای محدود و روی سیستم‌های مختلف با خروجی‌های مختلف بودند. \end{itemize} کانوث در فرصت مطالعاتی خود در سال 1978 میلادی روی این پروژه کار کرد و اولین نگارش آن را آماده نمود. طی سال‌های بعد از آن کانوث و افراد دیگری روی آن کار کردند. اما با توجه به سطح پایین بودن دستورات آن، کار با آن کمی سخت بود. در اوایل دهۀ 1980 میلادی لِسلی لمپورت\footnote{\lr{Leslie Lamport}} یک مجموعه از ماکروهای \TeX\ را جمع‌آوری و به نام \LaTeX\footnote{تلفظ این کلمه «لِیتِک» یا «لاتِک» است.} ارائه کرد. این نگارش دستوراتی را در اختیار کاربران قرار می‌داد که بیشتر نیازهای آن‌ها را برآورد می‌کرد و لذا استفاده از آن مشابه استفاده از زبان‌های برنامه‌نویسی سطح بالا، برای سطح وسیع‌تری از کاربران قابل استفاده می‌کرد، بدون آن که نیاز به یادگیری مفاهیم زیادی داشته باشند. طی سالیان بعدی، \TeX به سطح وسیعی پیشرفت کرد و به تبع آن توسط بسیاری افراد، ناشرین و مجلات علمی مورد استفاده قرار گرفت و این پیشرفت و استفاده با سرعت بالای هنوز نیز ادامه دارد. در خصوص تاریخچه به همین مقدار بسنده می‌کنیم و خواننده علاقه‌مند را به مرجع \cite{TeXHis} ارجاع می‌دهیم. \section{چرا \TeX یا \LaTeX؟} اگر نشریه یا کتابی آماده کرده باشید و قصد چاپ آن را داشته باشید چه می‌کنید؟ بدیهی است ابتدا باید متن شما (که به فرض دست‌نویس است) حروف‌چینی شود و سپس برای چاپ فرستاده شود. البته در بیشتر موارد، حروف‌چینی با تایپ هم معنی در نظر گرفته می‌شود که از نظر حرفه‌ای این دو تفاوت بسیار دارند. کارِ حروف‌چین، یک کار تخصصی است که بسته به کاربرد متن، مشخص می‌کند مثلاً در هر خط از کتاب، چند کلمه یا کاراکتر باشد و در هر صفحه چند خط قرار بگیرد و یا اشکال کتاب در کجا قرار بگیرند و هر خط در کدام قسمت شکسته شود و بسیاری موارد دیگر. کیفیت کار حروف‌چین در محصول نهایی بسیار موثر است و گاهی یک کتاب بسیار مفید به دلیل کیفیت پایین حروف‌چینی که باعث ناخرسندی خواننده از بسیاری جهات می‌شود، با اقبال خوبی مواجه نمی‌شود. لذا برای ایجاد یک محصول خوب و استاندارد، لازم است از حروف‌چینی استفاده شود که تبحر لازم در این حرفه را داشته باشد و با پیشرفت‌های این رشته آشنا باشد و از آخرین تکنیک‌های حروف‌چینی در کار خود استفاده کند. با توجه به کامپیوتری شدن کارها، حروف‌چینی نیز به کامپیوترها منتقل شده است و برنامه‌های بسیاری برای حروف‌چینی ارائه شده است. بحث اصلی این است که ما از کدام حروف‌چین کامپیوتری برای کار خود استفاده کنیم؟ اولین جواب و شاید تنها جواب اکثر کاربران به این پرسش نرم‌افزار \lr{Word} از مجموعۀ \lr{Office} است. اما اولین نکته اینجاست که \lr{Word} اصلاً یک نرم‌افزار حروف‌چین نیست بلکه یک واژه‌پرداز یا \lr{Word Processor} است (مراجع \cite{Word,beuty,Art} را ببینید). یک واژه‌پرداز، یک محیطی در اختیار شما قرار می‌دهد تا مشابه یک دستگاه تایپ، شما متن خود را وارد کنید. هرچند در نگارش‌های جدید واژه‌پردازها امکانات زیادی اضافه شده است ولی هنوز هم این نرم‌افزارها را به عنوان حروف‌چین نمی‌شناسند. لذا استفاده از یک نرم‌افزار واژه‌پرداز برای حروف‌چینی مصداق بردن «بوریا باف» به «کارگاه حریر» در مثل فارسی است. البته افراد حرفه‌ای در صنعت چاپ احتمالاً به نرم‌افزار \lr{InDesign} اشاره می‌کنند که البته یک نرم‌افزار حروف‌چین است، اما علاوه بر قیمت بالای این محصول و تخصصی بودن استفاده از آن، به اعتقاد بسیاری از کارشناسان حروف‌چینی، محصول تولید شده توسط \TeX\ کیفیت بالاتری نسبت به محصول \lr{InDesign} دارد. در ذکر کیفیت \TeX\ همین بس که در تبلیغات \lr{InDesign} در جایی گفته شده است که این نرم‌افزار از الگوریتم‌های استفاده شده در \TeX\ استفاده می‌کند. چند مورد از مزایای \TeX \ را می‌توان به شرح زیر بیان کرد: \begin{itemize} \item اولاً تِک مجانی و متن-باز است و نسخه‌های مجانی آن روی تمام سیستم‌عامل‌ها موجود است. از جمله توزیع‌های مجانی تِک می‌توان به \lr{TeXLive}، \lr{MikTeX} اشاره کرد. برای دیدن لیست کامل از توزیع‌های تِک و مقایسۀ قابلیت‌های آنها به مرجع~\cite{Latex} مراجعه کنید. \item تِک هم پایدار و هم قابل انعطاف است. اهمیت موضوع پایداری برای افرادی که متونی را در \lr{Word} آماده کرده‌اند کاملاً قابل فهم است. زیرا ممکن نیست با مشکلات عدم پایداری آن که به نوعی برخورد نکرده باشند. این عدم پایداری در \lr{Word} به حدی است که به طنزهای بسیاری نیز برای آن بیان شده است، مثل این که احتمال قاطی کردن \lr{Word} با میزان اهمیت متن تایپ شده نسبت مستقیم و با زمان باقیمانده شخص برای کامل کردن متن، نسبت عکس دارد! از دید قابلیت انعطاف همین بس که کاربر حتی می‌تواند فاصله بین کاراکترها را کم یا زیاد کند. \item امکان فرمول‌نویسی با استفاده از تِک، اولاً نسبتاً ساده است و ثانیاً خروجی ایجاد شده بسیار شکیل است. حتی فرمول‌های بسیار پیچیده را به راحتی می‌توان در تِک با استفاده از دستوراتی نوشت و کیفیت خروجی فرمول به حدی است که به جرأت می‌توان گفت، همتا ندارد. \item امکان گرفتن خروجی \lr{PDF} مستقیم از آن وجود دارد و خروجی \lr{PDF} تولید شده، هم دارای کیفیت بسیار بالایی است و هم حجم بسیار کمی نسبت به سایر نرم‌افزارها دارد. میزان این کیفیت به نوعی است که برخی برای تولید تصاویر با کیفیت برداری از تِک استفاده می‌کنند. نرم‌افزارهای گرافیکی وجود دارند که نیازهای کاربر را از طریق یک رابط گرافیکی دریافت می‌کند و آن را تبدیل به فایل مناسب حروف‌چینی با تِک کرده و سپس محصول نهایی را با استفاده از تک تولید می‌کند. امکانات و بسته‌های گرافیکی موجود برای تِک بسیار کامل است. برای نمونه بارکد تولید شده در انتهای همین مقاله، با استفاده از یکی از این بسته‌ها ایجاد شده است. تاکید می‌کنم که این بارکد مربعی مستقیماً در همین مقاله تولید شده و اینطور نیست که در نرم‌افزار دیگری تولید شود و در این مقاله درج شود. \item قابل حمل است به این معنی که یک فایل آماده شده با تِک را برای هر فردی بفرستید، اولاً آن شخص صرفنظر از این که از کدام توزیع تِک و در کدام سیستم‌عامل استفاده می‌کند، می‌تواند آن را استفاده کرده و با خروجی دقیقاً یکسان با آنچه شما دریافت می‌کنید آن را بسازد. این خاصیت وقتی با حجم کم فایل‌های آن (زیرا فایل‌های آن فایل‌های متنی ساده است) نیز در نظر گرفته شود، یک امکان منحصر به فرد برای انجام پژوهش‌های مشترک بین افرادی که از راه دور ارتباط دارند، فراهم می‌کند. \item بسیار پویا است و به راحتی قابل توسیع است. همین امر با در نظر گرفتن متن-باز بودن آن امکانی را فراهم کرده است که افراد بتوانند بر مبنای آن بسته‌هایی را برای کارهای خود آماده و ضمن استفاده، در اختیار سایر کاربران قرار دهند. لذا خیلی دور از ذهن نیست کاری را که شما قصد انجام آن را دارید، قبلاً در بسته‌ای آماده شده باشد و شما به راحتی بتوانید از آن استفاده کنید. مثلاً فرض کنید بخواهید نوتهای موسیقی خود را در تِک تایپ کنید. با یک جستجوی ساده در موتورهای جستجو به مرجع~\cite{Music} می‌رسید. \item امکان استفاده از آن در حروف‌چینی زبان‌های مختلف وجود دارد، حتی زبان‌هایی کاملاً متفاوت با انگلیسی نظیر زبان‌های فارسی و عربی که از راست به چپ نوشته می‌شوند و زبان‌های پیچیده‌ای نظیر چینی~\cite{Art}. \item متون تهیه شده در تِک بسیار ساختاریافته است و لذا به راحتی و بدون نیاز به ویرایش مجدد، می‌توان قالب آن را عوض کرد. این مزیت، یکی از اصلی‌ترین دلایلی است که مجلات از این نرم‌افزار استفاده می‌کنند زیرا به راحتی با دریافت فایل اصلی تِک مقاله و با اندک تغییراتی می‌توانند آن را در فرمت مجلۀ خود آماده کنند. البته بسیاری نیز با توجه به سادگی کار، فرمت را که در قالب یک فایل آماده شده است در اختیار نویسنده قرار می‌دهند تا مقاله را با آن فرمت تهیه کند. متون آماده شده با تِک را به ظرفی پر از مایع تشبیه می‌کنند که به راحتی می‌توان به ریختن مایع در یک قالب، آن مایع را به شکل آن قالب درآورد. \item استفاده از تِک برای حروف‌چینی از طریق خط فرمان است و هیچ رابط گرافیکی خاصی نیاز ندارد. البته، محیط‌های مختلف برای نوشتن و حروف‌چینی آن موجود و برخی مجانی و برخی غیرمجانی در دسترس است ولی آنها نیز از دستورات خط فرمانی تِک برای کار خود استفاده می‌کنند. از این محیط‌ها می‌توان به \lr{Winedit}\footnote{\url{http://www.winedt.com/}} و \lr{TeXMaker}\footnote{\url{http://www.xm1math.net/texmaker/}} اشاره کرد. لیست محیط‌های مربوط به تِک و مقایسۀ آنها را می‌توانید در مرجع~\cite{Editors} ببینید. \item انجام بسیاری از کارهای حروف‌چینی نظیر شماره گذاری فصل‌ها و بخش و زیربخش‌ها، فرمول‌ها، اشکال و جداول به صورت اتوماتیک است. همچنین استفاده از یک سیستم ارجاع مبتنی بر برچسب جهت به روزرسانی خودکار ارجاعات و تهیه خودکار مواردی چون فهرست مطالب، فهرست اشکال و اندکس برای متون که انجام آن به صورت معمول هم زمان‌بر است و هم با اشتباهات متعددی روبرو می‌شود را به صورت خودکار انجام می‌دهد. ضمن این که به دلیل انجام خودکار این کارها، در صورت انجام تغییراتی در متن، تمام این موارد قابل انجام به صورت مجدد جهت به روزرسانی است. فقط تصور کنید که در ویرایش کتاب شما، فقط یک فصل به یکی از فصول اولیه کتاب اضافه شده است. با این تغییر مختصر باید اولاً شماره تمام فصول بعدی تغییر کند و ثانیاً در ارجاعات به این فصول نیز این تغییرات اعمال شود که حتی فکر کردن به انجام دستی آن باعث سردرد می‌شود! \item در متون، برخی قسمت‌ها نظیر جداول و اشکال را اشیاء شناور می‌نامند به این معنی که حروف‌چین می‌تواند آن را در قسمت‌های مختلفی بیاورد و مکان ثابتی برای آنها وجود ندارد. تِک از یک الگوریتم مناسب جهت جایابی این اشیاء شناور استفاده می‌کند به صورتی که نتیجه بسیار مناسب است. همزمان این امکان را به نویسنده می‌دهد که اگر برای شیء شناوری، محل خاصی مد نظر دارد، بتواند آن را نیز اعمال کند. \end{itemize} در اینجا به بیان همین مزایا بسنده می‌کنیم. لازم است در کنار مزایا، به موارد و افرادی نیز اشاره کنیم که استفاده از تِک توصیه نمی‌شود. \begin{itemize} \item اگر زمان کافی برای یادگیری تِک ندارید، مطمئناً این انتخاب مناسبی برای شما نیست. زیرا ممکن است با نرم‌افزارهایی نظیر \lr{Word} حتی با فرض عدم آشنایی بتوانید متنی را آماده‌سازی کنید ولی این اتفاق در تِک نمی‌افتد. لذا در شروع کار لازم است زمان کافی برای یادگیری حداقل اصول آن صرف کنید. هرچند به شما اطمینان می‌دهیم چندین برابر وقتی را که در اینجا صرف می‌کنید در تهیه متن خود با این سیستم صرفه‌جویی خواهید کرد. \item اگر محیط‌های \lr{WYSIWYG}\footnote{\lr{What You See Is What You Get}} نظیر \lr{Word} را می‌پسندید. در استفاده از تِک شما باید فایل منبعی را آماده کنید که یک فایل متنی اسکی یا یونیکد است. سپس این فایل را به حروف‌چین تِک می‌دهید تا متن حروف‌چینی شده را آماده کرده و به شما تحویل دهد. لذا امکان دیدن همزمان نتیجه در زمان تایپ متن ورودی وجود ندارد. البته اخیرا پروژه‌ای برای این منظور به نام \lr{LyX}\footnote{http://www.lyx.org/} معرفی شده است که سعی در اضافه کردن این قابلیت به تِک دارد ولی پیش‌بینی می‌شود با توجه به مشکلاتی که این قابلیت ایجاد می‌کند، استفاده از آن خیلی جذاب نباشد. \item هیچ زمینه‌ای در برنامه‌نویسی کامپیوتر ندارید. در نهایت تِک یک زبان برنامه‌نویسی حروف‌چینی است و لذا در روند حروف‌چینی، ممکن است با خطاهای متعددی روبرو شوید که لازم است مشابه رفع خطاهای گرامری\footnote{\lr{Syntax error}} یک برنامه، آنها را پیدا و رفع کنید. یادآوری می‌شود که در نهایت تِک یک زبان برنامه‌نویسی است. \end{itemize} \section{ساختار فایل و روش استفاده} برای استفاه از حروف‌چین تِک، متن خام باید در یک ویرایشگر تایپ شده و سپس فایل حاصل (که پسوند آن \lr{.tex} است) به برنامۀ حروفچین با استفاده از خط فرمان داده شود. ویرایشگرهایی وجود دارند که امکان وارد کردن متن خام و به طور همزمان، امکان دادن فایل به موتور \TeX\ و نشان دادن نتیجۀ حروف‌چینی را دارند. اما تمام آنها بر مبنای همان دستورات خط فرمان عمل می‌کنند و هیچکدام به تنهایی و بدون دسترسی به یک موتور \TeX\ نمی‌توانند خروجی تولید کنند. البته هیچ وابستگی بین ویرایشگر و فایل تولید شده توسط آن وجود ندارد و یک فایل توسط هر کدام می‌تواند تولید یا ویرایش شود یا فایل ایجاد شده توسط یک ویرایشگر، در دیگری تغییر یابد. برای حروف‌چینی فایل، می‌توان از طریق خط فرمان به صورت زیر عمل کرد. در ویندوز وارد \lr{Command Prompt } شوید و به محل قرار گرفتن فایل مربوطه (همان فایل با پسوند \lr{.tex}) بروید. بسته به کاربرد خود و شکل خروجی مورد نظر یکی از دستورات زیر را بزنید تا فایل خروجی مربوطه ایجاد شود. به جای \lr{filename} نام فایل با پسوند \lr{.tex} گذاشته شود. \begin{center} \begin{tabular}{|c|c|} \hline برای خروجی .dvi با فایل ورودی انگلیسی & \lr{latex filename}\\ \hline برای خروجی .pdf با فایل ورودی انگلیسی & \lr{pdflatex filename}\\ \hline برای خروجی .pdf با فایل ورودی فارسی یا انگلیسی & \lr{xelatex filename}\\ \hline \end{tabular} \end{center} فایل آماده شدۀ خام، شامل دستوراتی است که قسمتهای مختلف متن نظیر عنوان فصل و بخش و سایر موارد را مشخص می‌کند. این دستورات در راهنمای تِک آمده است. اگر این دستورات درست استفاده نشده باشند، حروف‌چین تِک در زمان حروف‌چینی خطا می‌دهد که پیام خطا شامل شماره خطی است که در آن خطا اتفاق افتاده است. لذا، در این موارد باید مشابه خطاگیری از یک برنامۀ کامپیوتری، نسبت به رفع خطا اقدام کرد. توجه کنید که وجود خطا ممکن است متن را به صورتی به غیر از آنچه مورد نظر است حروف‌چینی کند و اگر تعداد خطاها زیاد باشد ممکن است قسمت یا کل متن را حروف‌چینی نکند و خروجی نداشته باشد یا خروجی حاصل ناقص باشد. در اینجا به نمونه‌ای کوچک از فایل خام حروف‌چینی و نتیجۀ حروف‌چینی می‌آوریم. برای فایل حاوی متن زیر (سمت راست) خروجی شکل روبرویش ایجاد می‌شود. \begin{minipage}{0.4\textwidth} \latin \small \begin{verbatim} \documentclass[12pt]{article} \begin{document} \title{Title of paper} \author{First LastName} \maketitle \section{Section title} some text here and formula $$\sum_{i=1}^\infty \frac{e^x}{1+\frac{1}{x}}.$$ \subsection{sub-section} And here ... \section{Section two} Something \end{document} \end{verbatim} \end{minipage} \begin{minipage}{0.6\textwidth} \includegraphics[width=0.9\textwidth]{test-crop.pdf} \end{minipage} \section{منابع آموزشی و فایل‌های نمونه} جهت یادگیری دستورات و شکل استفاده از تِک، منابع زیادی وجود دارد که اکثراً به رایگان در دسترس هستند. در لینک زیر برخی از این منابع و همچنین اسلایدهایی برای آموزش این سیستم آمده است. \centerline{\centering \url{http://cs.yazd.ac.ir/farshi/LaTeX/LaTeX.html}} به خاطر داشته باشید که یادگیری تِک نیاز به زمان و حوصله دارد اما مطمئن باشید ارزش آن را دارد.