TEX(1) General Commands Manual TEX(1)

tex, initex - قالب‌بندی و حروف‌چینی متن

tex [options] [&format] [ file [ more-input ] | [ \more-input ]

حروف‌چین TeX را روی file[.tex] اجرا می‌کند که معمولاً file.dvi را می‌سازد. اگر آرگومان فایل پسوندی نداشته باشد، «.tex» به آن افزوده خواهد شد.

روش معمول استفاده، اجرای دستور زیر است:

tex paper

تا paper.tex با TeX پردازش شود. نام paper اصطلاحاً «jobname» (نام کار) خواهد بود و در ساخت نام فایل‌های خروجی استفاده می‌شود. اگر TeX در سطر نخست نام فایلی دریافت نکند، jobname برابر با texput خواهد بود. هنگام جستجوی یک فایل، TeX نام فایل را هم با پسوند پیش‌فرض افزوده شده (.tex) و هم بدون آن جستجو می‌کند، مگر اینکه نام از پیش دارای آن پسوند باشد. اگر paper نام کار (jobname) باشد، لاگی از پیام‌های خطا با جزئیاتی بسیار بیش از آنچه معمولاً روی صفحه نمایش داده می‌شود در paper.log نوشته خواهد شد، و فایل خروجی paper.dvi خواهد بود. گزینهٔ --jobname نام کار را به‌طور صریح تعیین می‌کند.

TeX متن‌ها و دستورهای درهم‌آمیختهٔ موجود در ورودی را قالب‌بندی کرده و فایلی موسوم به DVI (کوتاه‌شدهٔ DeVice Independent یا مستقل از دستگاه) تولید می‌کند. فایل‌های DVI یک بازنمایی باینری و مستقل از دستگاه از صفحات سند خروجی هستند. آن‌ها می‌توانند روی صفحه نمایش داده شوند (مانند xdvi(1))، به PDF تبدیل شوند (dvipdfmx(1))، به PostScript تبدیل شوند (dvips(1))، یا به روش‌های دیگر پردازش شوند. موتورهای دیگر (pdftex(1)، luatex(1))، که از نوادگان TeX اولیه هستند، می‌توانند مستقیماً خروجی PDF تولید کنند.

قابلیت‌ها و زبان TeX در منابع متعددی توصیف شده‌اند (به مراجع مراجعه کنید)، از جمله کتاب اصلی دونالد کانوث (Donald Knuth)، The TeXbook. TeX معمولاً با مجموعهٔ بزرگی از ماکروهای از پیش‌کامپایل‌شده که «قالب» (format) نامیده می‌شوند استفاده می‌شود. قالب اصلی کانوث plain نام دارد. قالب‌های دیگر، به‌ویژه latex(1)، بسیار بزرگ‌تر هستند، اما همچنان کاملاً به‌صورت ماکروهای TeX پیاده‌سازی شده‌اند.

پردازش خط فرمان

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

در صورت نبود آرگومان‌های غیرگزینه‌ای، TeX یک اعلان تعاملی ** ارائه می‌دهد؛ هر متنی که وارد کنید، دقیقاً همانند آرگومان‌های غیرگزینه‌ای خط فرمان پردازش خواهد شد.

مثال‌ها:

دستور «\input foo» را اجرا می‌کند.
دستور «\input foo bar» را اجرا می‌کند که foo.tex را به عنوان ورودی خوانده و سپس رشتهٔ «bar» را حروف‌چینی می‌کند.
دستور \end را اجرا می‌کند؛ در اینجا بک‌اسلش دوگانه روشی رایج برای گریز دادن (escape) بک‌اسلش در شل است. TeX باید تنها یک بک‌اسلش دریافت کند.

جهت تأکید مجدد، متن نام فایل ورودی و همچنین هر متنی که پس از نام فایل می‌آید، مشمول گسترش ماکروهای TeX است. در نتیجه، نویسهٔ ~ معمولاً در نام فایل قابل استفاده نیست، زیرا ~ بر اساس قرارداد به‌عنوان یک نویسهٔ فعال تعریف شده است که به چندین نشانهٔ پایه‌ای (primitive tokens) گسترش می‌یابد، و این‌ها نمی‌توانند بخشی از نام فایل باشند. معمولاً می‌توانید از \string~ برای به‌دست آوردن یک نویسهٔ لفظی ~ استفاده کنید. اطلاعات بیشتر دربارهٔ نام‌های فایل ورودی: https://tug.org/texinfohtml/web2c.html#Input-filenames

انتخاب قالب (.fmt)

با آرگومان &format، TeX به جای tex.fmt پیش‌فرض (که با استفاده از مسیر TEXFORMATS جستجو می‌شود؛ بخش محیط در زیر را ببینید)، مجموعه دستورهای از پیش‌کامپایل‌شدهٔ موجود در فایل (باینری) format.fmt را می‌خواند. این کار گاهی راحت‌تر از استفاده از گزینهٔ معادل -fmt format است.

پیاده‌سازی TeX در TeX Live (معروف به Web2C) خط فرمان خود را بررسی می‌کند تا نامی را که با آن فراخوانی شده است بیابد. هنگامی که به صورت initex فراخوانی شود (یا زمانی که گزینهٔ معادل -ini داده شود)، می‌تواند برای کامپایل اولیهٔ ماکروها در یک فایل .fmt به کار رود. هنگامی که به صورت virtex فراخوانی شود، از قالب plain استفاده خواهد کرد. امروزه، اگر هر یک از فایل‌های اجرایی initex و virtex یا هر دوی آن‌ها وجود داشته باشند، پیوندهای نمادینی به فایل اجرایی tex هستند؛ پیوند نمادین virtex به‌طور پیش‌فرض در TeX Live ساخته نمی‌شود.

هنگامی که با هر نام دیگری فراخوانی شود، TeX آن نام را به عنوان نام قالبی که باید استفاده شود در نظر می‌گیرد. به‌ویژه، هنگامی که به عنوان tex فراخوانی شود، فایل قالب tex.fmt خوانده می‌شود که همسان با قالب plain است. دستورهای تعریف‌شده توسط قالب plain در ضمیمهٔ B کتاب The TeXbook، در کنار منابع دیگر (مراجع زیر را ببینید) شرح داده شده‌اند. سایر موتورهای TeX نیز همین قرارداد را دنبال می‌کنند؛ برای نمونه، دستور latex یک پیوند نمادین به فایل باینری pdftex است و latex.fmt را می‌خواند.

این پیاده‌سازی از TeX می‌تواند سطر نخست فایل paper.tex را بررسی کند تا ببیند آیا با توالی دونوسه‌ای جادویی %& آغاز می‌شود یا خیر. اگر سطر نخست با %&format -translate-file tcxname آغاز شود، آنگاه TeX از قالب تعیین‌شده و (در صورت مشخص شدن) جدول ترجمهٔ tcxname برای پردازش فایل منبع استفاده خواهد کرد. نام قالب یا مشخصهٔ -translate-file می‌توانند حذف شوند، اما نه هر دوی آن‌ها. این کار بر انتخاب قالب بر پایهٔ نامی که برنامه با آن فراخوانی شده است، اولویت دارد. گزینهٔ -parse-first-line یا متغیر پیکربندی parse_first_line فعال بودن این رفتار را کنترل می‌کنند. این ویژگی برای TeX اصلی غیرفعال، و برای تمام موتورهای دیگر فعال است..PP کدگذاری‌های ورودی

TeX از آن‌جا که پیش از یونیکد (Unicode) طراحی شده است، ورودی را بایت‌به‌بایت می‌خواند و هیچ شناخت بومی از UTF-8 یا هر کدگذاری دیگری ندارد. این موضوع درباره‌ی pdfTeX نیز صدق می‌کند. با این حال، تا حد زیادی، UTF-8 می‌تواند در سطح ماکروی TeX تجزیه شود و بسته‌هایی برای این منظور توسعه یافته‌اند. برای پشتیبانی بومی از Unicode، موتورهای luatex(1) و xetex(1) همراه با قالب‌های متناظر در دسترس هستند.

مدیریت خطا

پیام‌های خطای TeX متأسفانه ممکن است تا حدی مبهم و نامفهوم باشند. به‌عنوان یک توصیه‌ی کلی، گاهی تنها نخستین خطا اهمیت دارد، بنابراین تلاش برای رفع اولیه آن ارزشمند است. اگر ابهامات باقی بمانند، کوتاه‌تر کردن فایل ورودی می‌تواند مفید باشد. برای توصیه‌های بیشتر، شامل برخی مشکلات خاص: https://texfaq.org/index#errors

یک فایل دمِ دستی در بیشتر توزیع‌ها null.tex است که حاوی هیچ چیزی نیست. هنگامی که TeX نمی‌تواند فایلی را که فکر می‌کند می‌خواهید وارد کنید پیدا کند، مدام از شما نام فایل دیگری را می‌خواهد؛ پاسخ دادن با «null» در صورتی که نمی‌خواهید چیزی وارد کنید شما را از این حلقه خارج می‌کند. همچنین می‌توانید نویسه‌ی EOF خود را (معمولاً control-D) وارد کنید.

هنگامی که TeX خطایی را گزارش می‌دهد، به‌طور پیش‌فرض شما را وارد یک گفتگوی تعاملی با اعلان ? می‌کند. پاسخ دادن با یک ? دیگر، پاسخ‌های در دسترس را به شما نشان می‌دهد؛ برای نمونه، x فوراً خارج می‌شود. پاسخ e به اعلان خطای TeX موجب می‌شود که ویرایشگر پیش‌فرض سیستم در سطر جاری از فایل فعلی اجرا شود. متغیر محیطی TEXEDIT می‌تواند برای تغییر ویرایشگر استفاده‌شده به کار رود. این متغیر ممکن است شامل رشته‌ای باشد که در آن "%s" نشان‌دهنده‌ی محل قرارگیری نام فایل و "%d" نشان‌دهنده‌ی محل شماره سطر ده‌دهی (در صورت وجود) است. برای نمونه، رشته‌ی TEXEDIT برای تعیین اجرای emacs می‌تواند بدین صورت تنظیم شود (با نحو شل Bourne):

TEXEDIT="emacs +%d %s"; export TEXEDIT

برای اشکال‌زدایی مشکلات مربوط به یافتن فایل‌ها، گزینه‌ی --kpathsea-debug را در زیر ببینید.

TeX (در TeX Live و Web2C) گزینه‌های خط فرمان زیر را می‌شناسد. بیشتر این گزینه‌ها توسط موتورهای مشتق‌شده نیز پشتیبانی می‌شوند.

گزینه‌ها می‌توانند با - یا -- آغاز شوند؛ در این مستند و سایر مستندات، ما «-» و «--» را به‌جای یکدیگر به کار می‌بریم. گزینه‌ها می‌توانند با نویسه‌ی = یا فاصله از مقادیر خود جدا شوند. نام فایل‌ها یا دیگر آرگومان‌های غیرگزینه‌ای را که با خط تیره آغاز می‌شوند، پس از گزینه‌ی -- قرار دهید. تمام برنامه‌ها در خانواده‌ی TeX (و بسیاری از برنامه‌های غیرTeX؛ این شیوه‌ی تجزیه‌ی خط فرمان در اصل از تابع کتابخانه‌ای getopt_long_only(3) گنو می‌آید) از این قراردادها پیروی می‌کنند.

در TeX و سایر موتورها، به دلیل ویژگی‌های خاص تجزیه‌ی سطر نخست در TeX که در بالا شرح داده شد، همه‌ی گزینه‌ها باید پیش از هر آرگومان غیرگزینه‌ای قرار گیرند. برای ابزارهای کمکی TeX، گزینه‌ها و غیرگزینه‌ها را می‌توان به هر ترتیبی وارد کرد.

نمایش پیام راهنما و خروج.
تجزیه‌ی string به‌عنوان یک سطر پیکربندی texmf.cnf. راهنمای Kpathsea را ببینید.
فعال‌سازی افزونه‌های encTeX. این گزینه فقط در ترکیب با -ini مؤثر است. برای دیدن مستندات افزونه‌های encTeX پیوند زیر را ببینید: http://www.olsak.net/enctex.html
-[no-]file-line-error
چاپ پیام‌های خطا در قالب file:line:error که مشابه روش قالب‌بندی بسیاری از کامپایلرهای دیگر است. به‌طور پیش‌فرض، یا با -no-، از قالب خطای پیش‌فرض TeX استفاده می‌شود که معمولاً با نویسه‌ی ! آغاز می‌شود.
این نام قدیمی گزینه‌ی -file-line-error است.
استفاده از format به‌عنوان نام قالبی که باید استفاده شود، به‌جای نامی که TeX با آن فراخوانی شده است یا یک سطر %&. (برای اطلاعات بیشتر در مورد قالب‌ها بالا و پایین را ببینید.)
خروج با یک کد خطا در هنگامی که در حین پردازش به خطایی برخورد شود.
شروع در حالت INI، که برای ذخیره و ایجاد قالب‌ها استفاده می‌شود. حالت INI می‌تواند برای حروف‌چینی استفاده شود، اما هیچ قالبی از پیش بارگذاری نمی‌شود و مقداردهی‌های اولیه‌ی اساسی مانند تنظیم catcodeها ممکن است لازم باشد.
حالت تعامل را تنظیم می‌کند. این حالت می‌تواند یکی از موارد batchmode، nonstopmode، scrollmode و errorstopmode باشد. معنای این حالت‌ها همانند دستورات \ متناظر است.
ارسال خروجی DVI به یک سوکت و همچنین به فایل خروجی معمول. در دسترس بودن این گزینه وابسته به انتخاب نصب‌کننده است.
همانند -ipc، و همچنین سرور را در سمت دیگر راه‌اندازی می‌کند. در دسترس بودن این گزینه وابسته به انتخاب نصب‌کننده است.
استفاده از name برای نام کار، به‌جای برگرفتن آن از نام فایل ورودی. (بالا را ببینید.)
پرچم‌های اشکال‌زدایی جستجوی مسیر را طبق bitmask تنظیم می‌کند. برای جزئیات، راهنمای Kpathsea را ببینید: https://tug.org/texinfohtml/kpathsea.html#Debugging
-[no-]mktex fmt
فعال‌سازی (یا غیرفعال‌سازی) mktexfmt، که در آن fmt باید tex یا tfm باشد. راهنمای Kpathsea را ببینید: https://tug.org/texinfohtml/kpathsea.html#mktex-scripts
فعال‌سازی افزونه‌های MLTeX (مخفف Multi-lingual TeX). فقط در ترکیب با -ini مؤثر است. اطلاعات بیشتر: https://tug.org/texinfohtml/web2c.html#MLTeX
استفاده از string برای توضیح فایل DVI به‌جای تاریخ.
نوشتن فایل‌های خروجی در directory به‌جای دایرکتوری جاری. فایل‌های ورودی ابتدا در directory و سپس در طول مسیر جستجوی عادی جستجو می‌شوند. همچنین توضیحات زیر درباره‌ی متغیر محیطی TEXMFOUTPUT را ببینید.
-[no-]parse-first-line
فعال‌سازی (یا غیرفعال‌سازی) بررسی سطر نخست فایل ورودی اصلی برای %& و در صورت وجود، تجزیه‌ی آن برای یافتن نام یک قالب یا گزینه‌ی -translate-file..TP -progname name برای مقاصد جستجوهای Kpathsea وانمود می‌کند که برنامهٔ name است. این گزینه بر هر دوی قالب مورد استفاده و مسیرهای جستجو اثر می‌گذارد.
ثبت‌کنندهٔ نام فایل را فعال می‌کند. این گزینه ردگیری ماشین‌خوانی از تمام فایل‌های باز شده برای ورودی و خروجی را در فایلی با نام وظیفه (jobname) معمول و پسوند .fls تولید می‌کند.
-[no-]shell-escape
اجازه دادن (یا ندادن) به اسناد برای اجرای دستورهای دلخواه پوسته از طریق ساختار \write18{command}. این ویژگی معمولاً به دلایل امنیتی به تعداد بسیار اندکی از برنامه‌های شناخته‌شده و امن محدود شده است. شما باید از این گزینه، که اجرای بدون قید و شرط هر دستوری را ممکن می‌سازد، تنها برای اسناد مورد اعتماد استفاده کنید. اطلاعات بیشتر دربارهٔ گریزهای پوسته: https://tug.org/texinfohtml/web2c.html#Shell-escapes
درج کردن ویژگی‌های خاص مبدأ (source specials) در فایل dvi. این گزینه برای synctex(1) به کار می‌رود. در ویرایشگرهایی که از SyncTeX پشتیبانی می‌کنند، می‌توانید در پنجرهٔ خروجی کلیک کرده و به مکان متناظر در مبدأ بازگردید.
درج ویژگی‌های خاص مبدأ در بخش‌های مشخصی از فایل DVI؛ where فهرستی از مقادیر جداشده با کاما است: cr، display، hbox، math، par، parent یا vbox.
استفاده از جدول ترجمه در فایل tcxname برای تنظیم نگاشت نویسه‌های ورودی و نگاشت مجدد نویسه‌های خروجی.
مشابه -translate-file است با این تفاوت که یک خط %& می‌تواند این تنظیم را بازنویسی کند.
-8bit
تمامی نویسه‌ها را به‌طور پیش‌فرض قابل چاپ می‌کند.
چاپ اطلاعات نسخه و خروج.

متغیرهای محیطی متعددی می‌توانند برای یافتن فایل‌ها استفاده شوند. در اینجا به چند مورد اشاره شده است، اما برای مشاهدهٔ فهرست جامع‌تر و نحوهٔ استفاده از آن‌ها به مستندات کتابخانهٔ Kpathsea(rch) (مانند https://tug.org/texinfohtml/kpathsea.html#TeX-support) مراجعه کنید. از ابزار kpsewhich(1) می‌توان برای پرس‌وجوی مقادیر متغیرها استفاده کرد. در مشخصات Kpathsea، علامت "//" به معنی جستجوی بازگشتی زیردایرکتوری‌ها است.

همان‌طور که در ابتدای texmf.cnf به اختصار و در مستندات Kpathsea به تفصیل توضیح داده شده است، هر تنظیم متغیری در texmf.cnf می‌تواند توسط متغیر محیطیِ هم‌نام (یا مرتبط) با آن بازنویسی شود.

در حالت عادی، TeX فایل‌های خروجی خود را در دایرکتوری جاری قرار می‌دهد. اگر باز کردن هر فایل خروجی در آنجا ممکن نباشد، تلاش می‌کند آن را در دایرکتوری مشخص‌شده در متغیر محیطی TEXMFOUTPUT باز کند. هیچ مقدار پیش‌فرضی برای این متغیر وجود ندارد. برای مثال، اگر دستور tex paper را اجرا کنید و دایرکتوری جاری قابل نوشتن نباشد، در صورتی که TEXMFOUTPUT مقدار /tmp را داشته باشد، TeX تلاش می‌کند فایل /tmp/paper.log (و در صورت تولید هرگونه خروجی، /tmp/paper.dvi) را بسازد. TEXMFOUTPUT همچنین برای فایل‌های ورودی نیز بررسی می‌شود، زیرا TeX اغلب فایل‌هایی تولید می‌کند که متعاقباً باید خوانده شوند؛ برای ورودی، هیچ پسوندی (مانند ".tex") اضافه نمی‌شود؛ نام ورودی دقیقاً به همان صورت که داده شده بررسی می‌شود.

اگر گزینهٔ -output-directory داده شود، TeX متغیر TEXMFOUTPUT را در محیط روی مقدار آن تنظیم می‌کند تا برای برنامه‌های فراخوانی‌شده توسط TeX در دسترس باشد.

اطلاعات بیشتر دربارهٔ محل فایل خروجی: https://tug.org/texinfohtml/web2c.html#Output-file-location

مسیر جستجو برای فایل‌های \input و \openin. به‌طور پیش‌فرض، این مسیر با . (یک نقطه، به معنای دایرکتوری جاری طبق معمول) آغاز می‌شود تا فایل‌های کاربر پیش از فایل‌های سیستم یافت شوند. یک مؤلفهٔ مسیر خالی با مسیرهای تعریف‌شده در فایل texmf.cnf جایگزین خواهد شد. برای مثال، مقدار TEXINPUTS را به ".:/home/user/tex:" تنظیم کنید تا دایرکتوری جاری و "/home/user/tex" به ابتدای مسیر جستجوی استاندارد افزوده شوند.
در texmf.cnf مربوط به TeX Live، متغیر TEXINPUTS و دیگر مسیرها به‌طور حرف‌به‌حرف با "." شروع نمی‌شوند، بلکه با $TEXMFDOTDIR آغاز می‌شوند که خود به‌طور پیش‌فرض "." است. این ارجاع غیرمستقیم، برای مثال، جستجوی دایرکتوری جاری و تمام زیردایرکتوری‌های آن را برای همه‌چیز آسان می‌کند: کافی است TEXMFDOTDIR را برابر با ".//" قرار دهید.
مسیر جستجو برای فایل‌های قالب (.fmt). آن‌ها معمولاً زیر دایرکتوری TEXMFSYSVAR ذخیره می‌شوند. می‌توانید مکان دقیق tex.fmt را (برای نمونه) با این فراخوانی kpsewhich بیابید:
kpsewhich -engine=/ -all tex.fmt
مسیر جستجو برای رشته‌های داخلی TeX (.pool)؛ این متغیر تنها برای TeX اصلی مطرح است؛ تمامی موتورهای توسعه‌یافته رشته‌ها را به صورت کامپایل‌شده درون باینری خود دارند.
مسیر جستجو برای فایل‌های متریک قلم (.tfm).
الگوی دستور برای جابه‌جایی به ویرایشگر (بالا را ببینید). پیش‌فرض که معمولاً vi است، هنگام کامپایل TeX تعیین می‌شود. محل فایل‌های ذکرشده در زیر از سیستمی به سیستم دیگر متفاوت است. برای یافتن محل آن‌ها از ابزار kpsewhich استفاده کنید.
فایل پیکربندی. این فایل شامل تعاریف مسیرهای جستجو و سایر پارامترهای پیکربندی مانند parse_first_line است.
فایل متنی حاوی رشته‌های درونی TeX.
*.tfm
فایل‌های متریک برای فونت‌های TeX.
*.fmt
فایل‌های قالب (.fmt) پیش‌پردازش‌شدهٔ TeX.
$TEXMFMAIN/tex/plain/base/plain.tex
بستهٔ ماکروی پایه‌ای که در The TeXbook شرح داده شده است.
$TEXMFMAIN/tex/plain/config/tex.ini
فایل درایوری که فایل قالب plain، یعنی tex.fmt را در TeX Live می‌سازد.

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

این نسخه از TeX در به‌دام‌انداختن سرریز محاسباتی هنگام جمع یا تفریق ابعاد ناتوان است. مواردی که این وضعیت رخ می‌دهد نادر است، اما در صورت وقوع ممکن است برنامه با خطا بسته شود و/یا فایل DVI تولیدشده نامعتبر گردد. از وصله‌ها برای مهار چنین موارد سرریزی استقبال می‌شود.

Knuth همچنان گزارش‌های جدید باگ را برای TeX می‌پذیرد، اما آن‌ها را تنها هر چند سال یک‌بار بررسی می‌کند. این گزارش‌ها از قبل توسط گروه کوچکی از داوطلبان باتجربه ارزیابی می‌شوند. برای فهرستی از گزارش‌های ارسال‌شده و اطلاعات بیشتر: https://tug.org/texmfbug

طبیعتاً باگ‌های موجود در موتورهایی غیر از TeX اصلی باید به فهرست‌های پستی و نگه‌دارنده‌های مربوط به خودشان هدایت شوند.

mf(1), pdftex(1), latex(1), luatex(1), و بسیار موارد دیگر.
Donald E. Knuth, The TeXbook, Addison-Wesley.
Leslie Lamport, LaTeX: A Document Preparation System, Addison-Wesley.

چندین مستند آزاد دربارهٔ زبان TeX:
Petr Olsak, TeX in a Nutshell: https://ctan.org/pkg/tex-nutshell
مبحث مستندات Plain TeX در CTAN: https://ctan.org/topic/tut-plaintex
Victor Eijkhout, TeX By Topic, مرجع یک TeXnician: https://www.eijkhout.net/tex/tex-by-topic.html
Paul W. Abrahams, Kathryn Hargreaves, Karl Berry, TeX for the Impatient, دربارهٔ TeX، plain TeX، و eplain(1); موجود در ترجمه‌های فرانسوی و چینی: https://ctan.org/pkg/impatient

برخی اطلاعات برخط:
Getting Started with TeX, LaTeX, and friends, یک صفحهٔ وب کوتاه با منابع برگزیده: https://tug.org/begin
David Bausum, TeX primitive control sequences: https://tug.org/utilities/plain/cseq.html
Levels of TeX، با توضیحی کوتاه پیرامون موتورها و قالب‌های مختلف: https://tug.org/levels
صفحات وب TeX Live: https://tug.org/texlive
کتابچهٔ راهنمای Texinfo و صفحهٔ وب Web2C: https://tug.org/web2c
کتابچهٔ راهنمای Texinfo و صفحهٔ وب Kpathsea: https://tug.org/kpathsea
کدهای منبع برنامه‌های literate در دنیای TeX، به‌صورت pdf: https://ctan.org/pkg/knuth-pdf
TUGboat (نشریهٔ گروه کاربران TeX؛ پذیرای مقالات ارسالی): https://tug.org/TUGboat

اگر TeX را سودمند یافتید، لطفاً عضویت در گروه کاربران TeX یا گروه کاربر دیگری در منطقهٔ خود، یا حمایت از آن را در نظر داشته باشید:
https://tug.org
https://tug.org/usergroups.html TeX، در صورت تلفظ صحیح، با ``blecchhh'' هم‌قافیه است. نگارش صحیح آن در قلم‌های شبیه به ماشین‌تحریر به‌صورت ``TeX'' است و نه ``TEX'' یا ``tex''.

TeX توسط Donald E. Knuth خلق شد، که آن را با استفاده از سیستم WEB خود برای برنامه‌های Pascal پیاده‌سازی کرد. این برنامه در دانشگاه Stanford توسط Howard Trickey و در Cornell توسط Pavel Curtis به Unix پورت شد. نسخه‌ای که هم‌اکنون در TeX Live، توزیع فعلی TeX برای Unix، قرار دارد توسط سیستم Web2C تولید شده است که در ابتدا توسط Tomas Rokicki و Tim Morgan نوشته شده بود.

گزارش باگ‌ها در TeX اصلی (بسیار نادر): https://tug.org/texmfbug
لیست پستی عمومی برای پرسش‌ها و گزارش‌های پیاده‌سازی: https://lists.tug.org/tex-k
لیست گفتگوی عمومی برای TeX Live: https://lists.tug.org/tex-live
لیست گفتگوی عمومی برای تمامی موضوعات TeX (و LaTeX): https://lists.tug.org/texhax

24 January 2026 Web2C 2026