چرا لینوکس را دوست دارم: داشتن نسخه latex و html مستندات

اینم یه تجربه پراکنده دیگه!

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

در ابتدای کار شواهدی پیدا کردم که احتمالا این روش وجود داره. اگه با روش مستند سازی doxygen آشنا باشید، مستندات با استفاده از فرمت خاص doxyegen نوشته میشن و این نرم افزار میتونه نتیجه رو به فرمت لاتک و html تبدیل کنه. پس کار امکان پذیره. همچنین یکی دیگه از نیازمندی‌های این راه‌حل برای تبدیل آسون بودنه تا مهاجرت و استفاده از راه حل کم هزینه باشه. همچنین به نظر من نوشتن به فرمت لاتک و html سخته و خیلی «تو دل برو» یا همون user friendly نیست. پس باید این نکته رو هم در پیدا کردن راه حل در نظر بگیرم.

خب حالا برم سراغ راه حلی که برای این مساله پیدا کردم. من از قبل با دو روش ساده نوشتن html که عبارتند از makrdown و reStructuredText بصورت محدودی آشنا بودم و میدونستم که تبدیل این فرمت‌های به html مثل آب خوردن انجام میشه پس نصف مساله حل بود. از اونجایی که من با markdown بیشتر آشنا بودم این زبان ساده شده رو انتخاب کردم. حالا میمونه تبدیل markdown به لاتک که بعد از یه ذره گشتن رسیدم به این دوتا پست(لینک، لینک) و با استفاده از اونها تونستم markdown رو به کمک ابزاری به نام pandoc به لاتک تبدیل کنم و با استفاده از زیپرشین اون رو تبدیل کنم به pdf. حالا مراحل انجام این کار رو اینجا مینویسم

  1. نوشتن مستند به فرمت markdown مثلا
    قسمت اول
    ======================
    
    نیازمندیها
    ======================
    پکیجهای زیر باید نصب شود
    
    ۱٫ پکیج اول
    ۲٫ پکیج اول
    ۳٫ پکیج اول
    
    ۴٫ پکیج اول
    ۵٫ پکیج اول
    
    ۶٫ سلام
    	۱٫ سلام ۲
    	۲٫ سلام ۳
    	۳٫ سلام ۴
    	۴٫ سلام ۵
    	۵٫ سلام ۶
    	۶٫ سلام ۷
    	۷٫ سلام ۸
    	۸٫ سلام ۹
    
    چطور کامپایل کنیم
    ====================
    کامپایل کن دیگه
    
  2. تبدیل این متن به فرمت xelatex با دستور زیر
    pandoc -f markdown --latex-engine=xelatex -R -i a.md -o a.tex
  3. متن نتیجه شده به شکل زیره که اضافاتی داره
    \section{قسمت اول}\label{ux642ux633ux645ux62a-ux627ux648ux644}
    
    \section{نیازمندیها}\label{ux646ux6ccux627ux632ux645ux646ux62fux6ccux647ux627}
    
    پکیجهای زیر باید نصب شود
    
    \begin{enumerate}[<+->]
    \def\labelenumi{\arabic{enumi}.}
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      سلام
    
      \begin{enumerate}[<+->]
      \def\labelenumii{\arabic{enumii}.}
      \itemsep1pt\parskip0pt\parsep0pt
      \item
        سلام ۲
      \item
        سلام ۳
      \item
        سلام ۴
      \item
        سلام ۵
      \item
        سلام ۶
      \item
        سلام ۷
      \item
        سلام ۸
      \item
        سلام ۹
      \end{enumerate}
    \end{enumerate}
    
    \section{چطور کامپایل
    کنیم}\label{ux686ux637ux648ux631-ux6a9ux627ux645ux67eux627ux6ccux644-ux6a9ux646ux6ccux645}
    
    کامپایل کن دیگه
  4. حذف این اضافات با دستورارت زیر
    sed -i.bak 's/\[<+->\]//' a.tex
    sed -i.bak 's/\\def\\labelenumi{\\arabic{enumi}.}//g' a.tex
    sed -i.bak 's/\\itemsep1pt\\parskip0pt\\parsep0pt//g' a.tex
  5. که نتیجه میشه این
    \section{قسمت اول}\label{ux642ux633ux645ux62a-ux627ux648ux644}
    
    \section{نیازمندیها}\label{ux646ux6ccux627ux632ux645ux646ux62fux6ccux647ux627}
    
    پکیجهای زیر باید نصب شود
    
    \begin{enumerate}
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      پکیج اول
    \item
      سلام
    
      \begin{enumerate}
      \item
        سلام ۲
      \item
        سلام ۳
      \item
        سلام ۴
      \item
        سلام ۵
      \item
        سلام ۶
      \item
        سلام ۷
      \item
        سلام ۸
      \item
        سلام ۹
      \end{enumerate}
    \end{enumerate}
    
    \section{چطور کامپایل
    کنیم}\label{ux686ux637ux648ux631-ux6a9ux627ux645ux67eux627ux6ccux644-ux6a9ux646ux6ccux645}
    
    کامپایل کن دیگه
  6. این متن به تنهایی توسط لاتک کامپایل نمیشه و باید یه سری تگ‌های استاندارد لاتک بهش اضافه بشه تا بگه فرمت مستند چیه فونتا چین و از این دست چیزا. بهترین راه برای انجام اینکار داشتن یه فایل دیگه برای اون تگ‌های و include کردن این فایل در اون فایل هست. یه نمونه از اون فایل به این صورته:
    \documentclass[a4paper,12pt]{book}
    \usepackage{aut_test}
    \usepackage[colorlinks,linkcolor=black,citecolor=black]{hyperref}
    \usepackage{graphicx}
    \usepackage{amsthm,amssymb}
    \usepackage{tocbibind}
    \usepackage{listings}
    \usepackage{xepersian}
    \settextfont[Scale=1]{B Zar}
    
    \begin{document}
    \chapter{فصل اول}
    \include{a}
    \end{document}
  7. و با این دستور لاتک رو کامپایل میکنیم
    xelatex  -synctex=-1 doc.tex
  8. و نتیجه توی اینجا قابل مشاهده است.

همین!

14 دیدگاه در “چرا لینوکس را دوست دارم: داشتن نسخه latex و html مستندات

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

    • ay می‌گوید:

      منم نمیدونم اما هدف من در کل داشتن دو نسخه از یه متن بود که خیلی هم عکس و فورمول و اینا نداره. و گرنه در صورت پیچیده شدن خود آقای markdown هم به خوبی به html تبدیل نشه چه برسه به لاتک

  2. king می‌گوید:

    سلام دوست عزیز.
    باره اوله دارم با نرم افزار latex و .. آشنا میشم ، میخواستم بدونم این برنامه به چه دردی میخوره ؟ خب تو libre offlice یا microsoft office میشه این کاری که شما در نهایت به عنوان خروجی لینک گذاشتی رو همون اول بدون درد سر داشت .
    لطفا مورد استفاده این برنامه رو توضیح بده .

    • ay می‌گوید:

      سلام
      لاتک یه برنامه word processor هست که در جوامع علمی به شدت استفاده میشه و بخاطر کیفیت عالی صفحه‌بندی و ترکیب‌بندی صفحات و قدرت نوشتن فرمول و این دست چیزا ازش استفاده میشه. مهمترین ویژگی‌ش هم اینه که نوشته از فرمت و ترکیب‌بندی جداست و شما به راحتی میتونی فرمت رو عوض کنی در حدی یک چشم به هم زدن. هدف این نوشته این بود که من میخوام به یه روش آسون یه مطالبی رو هم در قابل سایت و هم در قالب فایل pdf داشته باشم. اگه فقط word بنویسم دیگه html در کار نخواد بود همچنین اگه هم html بنویسم خیلی سخت میشه صفحه بندیش کرد و تبدیلش کرد به pdf تر و تمیز

  3. بهروز می‌گوید:

    سلام. اول این که از این مطلب خوبتون خیلی سپاس‌گزارم. فقط یه سؤال دارم:‌ برای نوشتن مارک‌داون از یک ادیتور دوجهته استفاده می‌کنین؟‌ من تنها ادیتوری که واسه اوبونتو سراغ دارم، تک‌میکر دوجهته‌ست. شما از چی استفاده می‌کنید؟

    • Abbas Yazdanpanah می‌گوید:

      سلام. ممنون. من از gedit استفاده میکنم. دو طرفه بودن رو به حد خوبی رعایت میکنه و تا حدی هم markdown سرش میشه!

  4. ش.ش می‌گوید:

    بخش include کردن را متوجه نشدم تا قبل از این مرحله این کار را انجام دادم مرحله آخر را متوجه نشدم برای نوشتن با استفاده از مارک دوان فعلا دارم از http://www.sobhe.ir/moratab/ استفاده میکنم گفتم شاید برای شما هم کاربرد داشته باشد

    • Abbas Yazdanpanah می‌گوید:

      اون include برای اینه که latex خروجی به تنهایی کامل نیست و یه چیزایی باید بهش اضافه بشه. به همین خاطر فایل تولید شده رو توی یه فایل دیگه include کردم.

      به moratab هم یه نگاه میندازم ممنون از معرفی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *