لی‌تک به درد همه نمی‌خورد، ولی شاید به درد شما بخورد

نوشته حسین بهنودی در ۴ مرداد ۱۳۹۸

برگرفته شده از ویکی لاتک پارسی

مقدمه

هرکس که مدتی با مایکروسافت ورد کار کرده باشد، تا حالا به قانون‌های زیر درباره‌اش پی برده است:

  • احتمال قفل‌کردن برنامه نسبت مستقیم دارد با اهمیت نوشته‌ای که تایپ می‌کنید.
  • احتمال قفل‌کردن برنامه نسبت عکس دارد با زمانی که از مهلت نوشتن باقی مانده است.
  • احتمال قفل‌کردن برنامه نسبت مستقیم دارد با زمانی که از آخرین ذخیره‌کردن نوشته گذشته است.

از شوخی که بگذریم، من هم نوشته‌های بزرگ زیادی را با مایکروسافت ورد تایپ کرده‌ام. البته این روزها می‌توانم با اپن آفیس (OpenOffice) هم کار کنم که نرم‌افزار بسیار خوبی است و هرکاری را که بخواهم می‌کند. ولی پس از سر و کله زدن‌های بسیار با مایکروسافت ورد، وقتی دانشجوی دکتری شدم تصمیم گرفتم لی‌تک را هم امتحان کنم. راستش، خیلی هم به دلخواه خودم نبود؛ قرار بود مقاله‌ای را به یک مجله بفرستم و فهمیدم که آن مجله فقط نوشته‌های لی‌تک را می‌پذیرد. مهلت فرستادن مقاله همان روزی بود که من از فراخوان مقاله باخبر شدم! مجبور شدم پابرهنه بپرم به وسط لی‌تک، و خب حدس می‌زنید که اصلاً کار آسانی نبود. (نکتهٔ آموزشی: هیچ گاه یک چیز تازه را با عجله یاد نگیرید!)

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

این مقاله قرار نیست خودآموز استفاده از لی‌تک باشد. فقط می‌خواهم کمی از خوبی‌های لی‌تک بگویم و این که چرا فکر می‌کنم امکانات لی‌تک به امکانات نرم‌افزارهای واژه‌پرداز (مثل مایکروسافت ورد) سر است.

لی‌تک چیست؟

در سال ۱۹۷۸، دونالد کانوث (Donald Knuth) -که یکی از مشهورترین و معتبرترین دانشمندان علوم کامپیوتر است- شروع به ساخت یک سیستم حروف‌چینی به نام تِک (TeX) کرد. طراحی زبان تک، پس از ده سال تمام شد (خودش در آغاز فکر می‌کرد یک سال بیشتر طول نخواهد کشید‍!). تک می‌توانست چیدمان (layout) نوشته‌ها را به طرز حیرت‌آوری تنظیم کند. البته این قدرت زیاد باعث می‌شد که خیلی هم پیچیده باشد.

تا این که در دههٔ ۱۹۸۰ کسی به نام لسلی لمپرت (Leslie Lamport) مجموعه‌ای از ماکروها را طراحی کرد تا از این پیچیدگی‌ها بکاهد. کار او باعث شد تا حروف‌چینی نوشته‌ها آسان‌تر شود، و در ضمن محتوای نوشته و ظاهر آن از هم مستقل باقی بماند. این سیستم جدید لی‌تک (LaTeX) نام گرفت.

لی‌تک درواقع یک زبان نشانه‌گذاری (Markup language) است. محتوا در یک پروندهٔ متنی نوشته می‌شود و نشانه‌گذاری‌ها به شکل فرمان‌هایی بین متن قرار می‌گیرند و مشخص می‌کنند که هر بخش از نوشته چه‌طور نمایش یابد. مفسر لی‌تک آن پرونده را می‌خواند، محتوا را به شکل یک نوشته درمی‌آورد و یک پروندهٔ خروجی می‌سازد. همان طور که می‌بینید، لی‌تک مثل نرم‌افزارهای واژه‌پرداز معمولی نیست.

جدا بودن محتوا و ظاهر نوشته

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

این درست برعکس کاربران مایکروسافت ورد است که بلافاصله عنوان نوشته را انتخاب کرده و قالب‌بندی‌اش می‌کنند (مثلاً آن را بزرگ می‌کنند، یا فونتش را تغییر می‌دهند). نکته این‌جاست که این کار باید در کل نوشته با دست اعمال شود. در مقابل، لی‌تک برای قالب‌بندی از سبک‌های تعریف‌شده‌ای استفاده می‌کند. این سبک‌ها می‌گویند که هر بخش از نوشته چه‌طور باید نمایش یابد. اگر مثلاً خواستید فونت عنوان همهٔ بخش‌های نوشته‌تان را تغییر دهید، کافی است که تعریف آن سبک را عوض کنید تا کل نوشته خودبه‌خود به‌روز شود. خوبی این روش این است که نوشته‌تان خودسازگار و هماهنگ باقی می‌ماند.

البته مایکروسافت ورد هم این ویژگی استایل (Style) را دارد. ولی از آن‌جا که بکاربردن این ویژگی اختیاری است، کاربران معمولاً نمی‌دانند که چنین ویژگی‌ای هم اصلاً هست. لی‌تک مجبورتان می‌کند که ساختار منطقی نوشتهٔ خود را مشخص کنید (و کار خیلی خوبی می‌کند!) و برای همین است که می‌تواند از نوشتهٔ شما یک خروجی بسیار زیبا بسازد.

انعطاف‌پذیری

می‌توانید با لی‌تک هرکاری که فکرش را می‌کنید انجام دهید! در طول سالیان دراز، بسته‌های بسیار زیادی ساخته شده‌اند که ویژگی‌های لی‌تک را گسترش می‌دهند و بیشتر آن‌ها هم به رایگان در دسترس هستند. برای نمونه، کاربران اصلی لی‌تک که دانشگاهیان و پژوهشگران هستند بستهٔ Bibtex را به کار می‌برند که نوشتن و مدیریت مراجع مقالات را بسیار آسان می‌کند (من همیشه برای همکارانِ مایکروسافت ورد کارم که مراجع را با دست تایپ می‌کنند افسوس می‌خورم). بسته‌های دیگری هستند که با آن‌ها می‌توانید نت‌های موسیقی بنویسید، حرکات شطرنج را نمایش دهید، و هزار کار دیگر. با توجه به سابقهٔ زیاد آن، هر کاری که با لی‌تک بخواهید بکنید،  به احتمال زیاد، کسی قبلاً بسته‌ای برایش نوشته است.

تسلط بر نوشته

حتی در نوشته‌های کوتاه هم شاید شما با رفتار غیرهوشمندانهٔ مایکروسافت ورد روبه‌رو شده باشید. مثلاً گاهی وقت‌ها می‌خواهید تصویری را در پایین صفحه بگذارید و می‌دانید که تصویر در آن‌جا جا می‌شود، ولی مایکروسافت ورد نمی‌گذارد آن‌جا بگذاریدش! یا مثلاً در یک نوشتهٔ ۳۰ صفحه‌ای پر از شکل و جدول، یک بعدازظهر را صرف می‌کنید تا همه‌چیز مرتب شود؛ همهٔ تصاویر سرجای خودشان باشند و غیره. آن وقت می‌فهمید که یک جای نوشته‌تان کمی گنگ است و تصمیم می‌گیرید آن‌جا را کمی بیشتر توضیح دهید. یک جمله به متن اضافه می‌کنید، و می‌بینید که یکی از تصویرها به صفحهٔ بعد می‌پرد و یک فضای خالی بزرگ در پایین صفحه باقی می‌گذارد! بعد می‌فهمید که در یک واکنش زنجیره‌ای، همهٔ تصویرها و جدول‌هایتان تا آخر نوشته به هم ریخته‌اند! واقعاً خنده‌دار است. در مقابل، لی‌تک خیلی باهوش‌تر است و تصویرها و جدول‌هایتان را همیشه در جاهای معقول می‌گذارد. بنابراین اگر خواسته باشید که تصویرتان در پایین یک صفحه بماند، آن تصویر همیشه همان پایین می‌ماند!

البته با این که لی‌تک در جزئیات حروف‌چینی به جای شما تصمیم می‌گیرد، ولی اگر بخواهید، می‌توانید روی نمایش نوشته‌تان اختیار کامل داشته باشید.

کیفیت

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

مردم معمولاً یادشان می‌رود که حروف‌چینی یک مهارت حرفه‌ای است. حروف‌چین‌ها سال‌ها آموزش می‌بینند تا بیاموزند که یک کتاب را چگونه حروف‌چینی کنند. اما به محض این که شما برنامهٔ واژه‌پردازتان را باز می‌کنید، مرتکب اشتباهات حروف‌چینی می‌شوید. مثلاً حروف‌چین‌ها می‌دانند که خواندن سطرهایی که پهنایشان ۶۶ حرف است آسان‌تر است. به کتاب‌هایتان نگاه کنید و تعداد حرف‌ها را بشمارید! ولی تنظیم پیش‌فرض واژه‌پردازها به طور میانگین ۱۰۰ حرف در هر سطر است. حدس می‌زنم که خیلی‌ها برایشان مهم نیست، ولی اگر قرار باشد نوشته‌های بزرگ زیادی را بخوانید، برایتان مهم می‌شود.

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

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

پایداری

یکی از دلایلی که مردم با مایکروسافت ورد مشکل دارند این است که مایکروسافت ورد در هنگام ویرایش نوشته‌های طولانی زیاد قفل می‌کند. «بازیابی نوشته‌ها» (Document Recovery) یکی از ویژگی‌های پرکاربرد مایکروسافت ورد است. نمی‌دانم چرا مایکروسافت به جای طراحی این ویژگی روی پایداری نرم‌افزارش بیشتر کار نمی‌کند! (البته پایداری لزوماً قابل‌تعمیم نیست. من فقط از تجربهٔ شخصی خودم و دوستانم حرف می‌زنم. کسی را هم نمی‌شناسم که تا حالا دچار مشکل ناپایداری مایکروسافت ورد نشده باشد، ولی معنی‌اش این نیست که چنین کسی وجود ندارد.)

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

و در ضمن، در لی‌تک نیازی نیست نگران ویروس‌هایی باشید که در ماکروهای مایکروسافت ورد پنهان می‌شوند!

قیمت

در این مورد لی‌تک هیچ حرفی باقی نمی‌گذارد، چون رایگان است! ضرب‌المثل «هرچی بیشتر پول بدی، بیشتر آش می‌خوری» دربارهٔ لی‌تک صادق نیست، درست مثل بیشتر نرم‌افزارهای آزاد/اپن‌سورس. شما با یک نرم‌افزار بسیار قوی و پایدار روبرو هستید، که سال‌ها از رقیبانش جلوتر است.

غلط‌ یاب املایی چه‌طور؟

نکتهٔ خوبی است. این یک کمبود لی‌تک نیست، زیرا لی‌تک فقط متنی را پردازش می‌کند که شما به آن می‌دهید. اما در ویرایشگر متن، بر خلاف مایکروسافت ورد، شما خط‌های قرمزی را که اشتباه‌های املایی یا دستوری را یادآوری می‌کنند نمی‌بینید. و این چیزی است که بیشتر کاربران می‌خواهند داشته باشند.

به نظر من داشتن یک غلط‌یاب دستوری چیز خوبی نیست. کسی که واقعاً برای نوشتن نیازمند غلط‌یاب دستوری است، بهتر است به جای تکیه‌کردن بر توصیه‌های به دردنخور غلط‌یاب، برود یک کتاب دستور زبان بخواند.

دوم، وجود ویژگی اصلاح خودکار اشتباه‌های املایی (auto-correct)، هرچند که چیز خوبی به نظر می‌آید، در درازمدت مفید نیست. درست است که اشتباه‌های رایج ما را برطرف می‌کند، ولی باعث می‌شود که نتوانیم از اشتباه‌هایمان بیاموزیم. اگر هربار که به جای the می‌نویسیم teh، قرار باشد مایکروسافت ورد آن را برایمان اصلاح کند، هیچ‌گاه نمی‌فهمیم که داریم اشتباه می‌کنیم. با این حال، اگر فکر می‌کنید که خیلی نیازمند این ویژگی هستید، به آسانی می‌توانید هر ویرایشگر متن آبرومندی را مجهز به غلط‌یاب املایی کنید. برنامه‌های Ispell و Aspell رایج‌ترین غلط‌یاب‌های املایی هستند که هر دو اپن‌سورس هستند و می‌توانند با ویرایشگرهای متن یک‌پارچه شوند.

فرایند یادگیری

خب پس چرا همه با لی‌تک کار نمی‌کنند؟ زیرا کار با لی‌تک نیاز به «کمی» آموزش دارد. باید کمی وقت بگذارید تا کار با لی‌تک را یاد بگیرید. ولی خیلی زود می‌فهمید که لی‌تک ارزش این زمان کم را داشت. ساده‌ترین نوشتهٔ لی‌تک چنین چیزی است:

% hello.tex - Hello world Latex example
\documentclass{article}
\begin{document}
Hello World!
\end{document}

این دستورات این خروجی را می‌سازند. خیلی هم پیچیده نبود، نه؟ برای آموختن مقدمات لی‌تک، می‌توانید راهنمای لی‌تک را ببنید.

پس لی‌تک برای چه کسانی خوب است؟

خیلی ساده، هر کسی که نوشته‌های نه‌چندان ساده می‌نویسد و از محیط ناکارآمد واژه پردازها خسته‌شده، لی‌تک را درخواهد یافت! اگر شما کار دانشگاهی می‌کنید، احتمالاً مجبورید با لی‌تک کار کنید! هرکس که باید نوشته‌های مربوط به ریاضی بنویسد، نرم‌افزاری قوی‌تر و باکیفیت‌تر از لی‌تک پیدا نخواهد کرد. حتی دانشنامهٔ ویکی‌پدیا هم برای نوشتن رابطه‌های ریاضی در مقاله‌هایش، لی‌تک را به کار می‌برد.

لی‌تک برای آدم‌های خیلی تنبل یا آن‌هایی که تغییر را دوست ندارند خوب نیست! برای من این تغییر کاملاً سودآور بود، زیرا الان می‌توانم نوشته‌ها و گزارش‌هایم را با سرعت بیشتری بنویسم. هرکسی می‌تواند لی‌تک را امتحان کند و تفاوتش را ببیند و تصمیم بگیرد که چه نرم‌افزاری را برای نوشتن به کار ببرد.

منبع: