FMTUTIL(1) دستورات کاربری FMTUTIL(1)

fmtutil - مدیریت و بازسازی فرمت‌های TeX و پایه‌های Metafont، برای هر کاربر
fmtutil-sys - مدیریت و بازسازی فرمت‌های TeX و پایه‌های Metafont، در سطح سیستم
mktexfmt - ایجاد یک فایل فرمت TeX یا پایه‌ی Metafont

fmtutil [-user|-sys] [گزینه] ... [دستور]
fmtutil-sys [گزینه] ... [دستور]
fmtutil-user [گزینه] ... [دستور]
mktexfmt FORMAT.fmt|BASE.base|FMTNAME

fmtutil نسخه r77314 (2026-01-09 17:20:28 +0100)

بازسازی و مدیریت فایل‌های fmt مربوط به TeX و فایل‌های base مربوط به Metafont که در اینجا به طور کلی «فرمت‌ها» (formats) نامیده می‌شوند. (برنامه MetaPost دیگر از معادل قدیمی «mems» استفاده نمی‌کند.)

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

اگر نام دستور به mktexfmt ختم شود، تنها یک فرمت می‌تواند ایجاد شود. تنها گزینه‌های پشتیبانی‌شده --help و --version هستند و خط فرمان باید یا نام یک فرمت همراه با پسوند باشد، یا یک نام ساده که به عنوان آرگومان به --byfmt پاس داده می‌شود (توضیحات زیر را ببینید). نام کامل فایل تولید‌شده (در صورت وجود) تنها در خروجی استاندارد (stdout) نوشته می‌شود و چیز دیگری چاپ نخواهد شد. در صورت داشتن دسترسی نوشتن، از دایرکتوری‌های سیستمی استفاده می‌شود؛ در غیر این صورت از دایرکتوری‌های کاربری استفاده خواهد شد.

به طور پیش‌فرض، اگر تمام فرمت‌های درخواستی با موفقیت ساخته شوند، وضعیت خروجی صفر و در غیر این صورت غیرصفر خواهد بود.

استفاده از متغیرهای TEXMFSYS{VAR,CONFIG}
استفاده از متغیرهای TEXMF{VAR,CONFIG}
خواندن FILE به جای fmtutil.cnf (می‌تواند چندین بار مشخص شود که در این صورت از همه فایل‌ها استفاده می‌شود)
عدم ساخت واقعی فرمت‌ها
نوشتن فرمت‌ها در پوشه DIR به جای TEXMF[SYS]VAR
عدم استفاده از زیرپوشه اختصاصی موتور (engine) در fmtdir
خروج با موفقیت حتی اگر هیچ فرمتی انتخاب نشده باشد
خروج با موفقیت حتی اگر یک ENGINE مورد نیاز یافت نشود،
مشروط بر اینکه در این لیست قرار داشته باشد.
خروج با موفقیت حتی اگر ساخت یک فرمت با شکست مواجه شود
عدم به‌روزرسانی فایل‌های ls-R
ارسال گزینه -recorder و ذخیره فایل‌های .fls
بازسازی مجدد فقط فرمت‌های موجود
افزودن اطلاعات وضعیت فرمت‌های ساخته‌شده به انتهای FILE
اجرای بی‌صدا بدون چاپ پیام‌ها
(عملیاتی انجام نمی‌دهد، برای سازگاری با نسخه‌های پیشین وجود دارد)
(عملیاتی انجام نمی‌دهد، برای سازگاری با نسخه‌های پیشین وجود دارد)
(عملیاتی انجام نمی‌دهد، برای سازگاری با نسخه‌های پیشین وجود دارد)
(عملیاتی انجام نمی‌دهد، برای سازگاری با نسخه‌های پیشین وجود دارد)

بازسازی مجدد تمامی فایل‌های فرمت
ایجاد تمامی فایل‌های فرمت ناموجود
ایجاد (یا بازسازی) فرمت‌های ساخته‌شده با موتور ENGINE
ایجاد (یا بازسازی) فرمت FORMAT
ایجاد (یا بازسازی) فرمت‌های وابسته به HYPHENFILE
فعال‌سازی FORMAT ساخته‌شده با ENGINE
غیرفعال‌سازی FORMAT ساخته‌شده با ENGINE. اگر چندین فرمت نام یکسان ولی موتورهای متفاوتی داشته باشند،
مشخص کردن شناسه /ENGINE الزامی است.
فهرست کردن پیکربندی‌ها (فعال و غیرفعال)، فیلترشده بر اساس فرمت‌های موجود
چاپ نام فایل خط تیره (hyphen file) برای فرمت FORMAT
نمایش اطلاعات نسخه و خروج
نمایش این پیام راهنما و خروج

توضیح درخت‌ها و فایل‌هایی که به طور معمول استفاده می‌شوند:

اگر --cnffile در خط فرمان مشخص شده باشد (احتمالاً چندین بار)، از مقادیر آن استفاده می‌شود. در غیر این صورت، fmtutil تمام فایل‌های fmtutil.cnf یافت‌شده با اجرای دستور «kpsewhich -all fmtutil.cnf» را به ترتیبی که توسط kpsewhich بازگردانده می‌شود، می‌خواند. فایل‌های مشخص‌شده با --cnffile ابتدا به صورت مستقیم بارگذاری می‌شوند و اگر یافت نشوند و نام فایل فاقد بخش دایرکتوری باشد، از طریق kpsewhich جستجو می‌گردند.
در هر صورت، اگر چندین فایل fmtutil.cnf پیدا شود، تمام تعاریف فرمت موجود در همه فایل‌های fmtutil.cnf با یکدیگر ادغام می‌شوند.
بنابراین، اگر فایل‌های fmtutil.cnf در تمام درخت‌ها وجود داشته باشند و چیدمان پیش‌فرض همراه با TeX Live استفاده شود، فایل‌های زیر به ترتیب ذکر شده خوانده می‌شوند:
برای fmtutil-sys:
TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
TEXMFSYSVAR    $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
TEXMFLOCAL     $TEXLIVE/texmf-local/web2c/fmtutil.cnf
TEXMFDIST      $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
برای fmtutil-user:
TEXMFCONFIG    $HOME/.texliveYYYY/texmf-config/web2c/fmtutil.cnf
TEXMFVAR       $HOME/.texliveYYYY/texmf-var/web2c/fmtutil.cnf
TEXMFHOME      $HOME/texmf/web2c/fmtutil.cnf
TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
TEXMFSYSVAR    $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
TEXMFLOCAL     $TEXLIVE/texmf-local/web2c/fmtutil.cnf
TEXMFDIST      $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
(که در آن YYYY نسخه انتشار TeX Live است).
بسته به عملیات انجام‌شده، fmtutil ممکن است یکی از فایل‌های cnf موجود را به‌روزرسانی کند یا یک فایل fmtutil.cnf جدید بسازد، همان‌طور که در زیر شرح داده شده است.

محل ذخیره فایل‌های فرمت:

به طور پیش‌فرض، فایل‌های فرمت در $TEXMFSYSVAR/ENGINE توسط fmtutil-sys، و در $TEXMFVAR/ENGINE توسط fmtutil-user بازنویسی می‌شوند، که در آن /ENGINE زیرپوشه‌ای همنام با موتور استفاده‌شده است، مانند «pdftex».
برای mktexfmt، در صورت داشتن دسترسی نوشتن از TEXMFSYSVAR استفاده می‌شود وگرنه TEXMFVAR به کار می‌رود.
اگر گزینه --fmtdir=DIR مشخص شده باشد، DIR به جای TEXMF[SYS]VAR استفاده می‌شود، اما به طور پیش‌فرض زیرپوشه /ENGINE همچنان استفاده خواهد شد.
در تمام موارد، اگر گزینه --no-engine-subdir مشخص شود، زیرپوشه /ENGINE حذف می‌گردد.

محل ذخیره تغییرات پیکربندی:

اگر فایل‌های پیکربندی در خط فرمان داده شوند، اولین فایل مشخص‌شده برای ذخیره هرگونه تغییر ناشی از --enable یا --disable استفاده خواهد شد.
اگر فایل‌های پیکربندی از خروجی kpsewhich گرفته شوند، الگوریتم پیچیده‌تر است:
۱) اگر $TEXMFCONFIG/web2c/fmtutil.cnf یا $TEXMFHOME/web2c/fmtutil.cnf در فهرست فایل‌های استفاده‌شده باشد، فایلی که در ابتدای فهرست kpsewhich --all آمده است (معادل خروجی دستور «kpsewhich fmtutil.cnf») استفاده می‌شود.
۲) اگر هیچ‌یک از دو مورد فوق موجود نباشند و تغییراتی اعمال شود، یک فایل پیکربندی جدید در $TEXMFCONFIG/web2c/fmtutil.cnf ایجاد می‌گردد.
به طور کلی، ایده این است که اگر یک فایل کانفیگ قابل نوشتن نباشد، می‌توان از فایلی در سطح بالاتر استفاده کرد. به این ترتیب، تنظیمات توزیع را می‌توان در سطح سیستم با استفاده از TEXMFLOCAL بازنویسی کرد، و تنظیمات سیستم را می‌توان دوباره در TEXMFHOME یا TEXMFCONF یک کاربر خاص بازنویسی نمود.

حل تعارض تعاریف چندگانه یک فرمت:

اگر یک فرمت در بیش از یک فایل پیکربندی تعریف شده باشد، تعریفی که از اولین fmtutil.cnf فهرست‌شده می‌آید استفاده می‌شود.

غیرفعال کردن فرمت‌ها:

فایل‌های fmtutil.cnf با اولویت بالاتر (که زودتر فهرست شده‌اند) می‌توانند فرمت‌های موجود در فایل‌های با اولویت پایین‌تر (که دیرتر فهرست شده‌اند) را با نوشتن خطی مانند زیر در فایل با اولویت بالاتر غیرفعال کنند:
#! <fmtname> <enginename> <hyphen> <args>
عبارت #! باید در ابتدای خط همراه با حداقل یک فاصله یا تب پس از آن قرار گیرد و بین هر کلمه در لیست فاصله وجود داشته باشد.
برای مثال، می‌توانید فرمت luajitlatex را با ایجاد فایل $TEXMFCONFIG/web2c/fmtutil.cnf با خط زیر غیرفعال کنید:
#! luajitlatex luajittex language.dat,language.dat.lua lualatex.ini
(در واقع، فرمت‌های مرتبط با luajittex دقیقاً دلیل وجود گزینه --no-error-if-no-engine هستند، زیرا luajittex روی تمام پلتفرم‌ها قابل کامپایل نیست؛ بنابراین به این کار نیازی نیست.)

مقایسه fmtutil-user (دستور fmtutil -user) با fmtutil-sys (دستور fmtutil -sys):

هنگامی که fmtutil-sys اجرا می‌شود یا گزینه -sys در خط فرمان به کار می‌رود، متغیرهای TEXMFSYSCONFIG و TEXMFSYSVAR به ترتیب به جای TEXMFCONFIG و TEXMFVAR استفاده می‌شوند. این تفاوت اصلی میان fmtutil-sys و fmtutil-user است.
برای جزئیات بیشتر به نشانی https://tug.org/texlive/scripts-sys-user.html مراجعه کنید.
اگر مسیرهای دیگری در خط فرمان مشخص شوند، یا این درخت‌ها وجود نداشته باشند، یا از TeX Live اصلی استفاده نکنید، ممکن است مسیرهای دیگری به کار گرفته شوند.

پشتیبانی از فایل‌های اجرایی در حال توسعه:

اگر نام یک موتور به «-dev» ختم شود، فرمت‌ها در دایرکتوری مربوطه بدون پسوند -dev ساخته می‌شوند. این امکان اجرای آسان باینری‌های در حال توسعه را به صورت همزمان در کنار باینری‌های منتشرشده فراهم می‌کند.

این اسکریپت برای تولید فایل fmt/base برنامه‌های TeX و Metafont را اجرا می‌کند و بنابراین تمامی متغیرهای محیطی معمول و قوانین مسیر جستجو برای TeX/MF اعمال می‌شوند.

محل فایل اجرایی: ../../../../texk/texlive/../../../../Master/texmf-dist/scripts/texlive/fmtutil.pl

گزارش باگ‌ها به: tex-live@tug.org
صفحه خانگی TeX Live: https://tug.org/texlive

February 2026 TeX Live