MKJOBTEXMF(1) User Contributed Perl Documentation MKJOBTEXMF(1)

mkjobtexmf - ساخت درخت texmf برای یک پردازش خاص

2011-11-10 v0.8

برنامه mkjobtexmf یک برنامه را اجرا می‌کند و تلاش می‌نماید نام پرونده‌های استفاده‌شده را بیابد. دو روش در دسترس است: گزینه "-recorder" در TeX (محیط Web2C) یا برنامه strace.

سپس یک دایرکتوری با ساختار درخت texmf تولید می‌کند. پرونده‌های یافته‌شده را بررسی کرده و تلاش می‌کند آن‌ها را در این درخت texmf مرتب کند.

این ابزار می‌تواند برای اهداف بایگانی یا افزایش سرعت اجراهای بعدی TeX به کار رود.

mkjobtexmf [options]

این حالت TeX را اجرا می‌کند که می‌تواند توسط گزینه‌ها پیکربندی شود. هر دو روش برای به دست آوردن نام پرونده‌های استفاده‌شده در دسترس هستند.

mkjobtexmf [options] -- <cmd> [args]

حالت دوم به جای TeX، برنامه cmd را با آرگومان‌های args اجرا می‌کند. در این حالت تنها برنامه strace به عنوان روش موجود در دسترس است.

گزینه‌ها:

--jobname <name>       نام پردازش (اجباری).
                          معمولاً همان پرونده TeX
                          بدون پسوند است
--texname <file>       پرونده ورودی TeX. پیش‌فرض
                          نام پردازش با پسوند '.tex' است
--texopt <option>      گزینه‌ای برای اجرای TeX
--destdir <directory>  دایرکتوری مقصد،
                          پیش‌فرض `<jobname>.mjt' است
--output               افزودن پرونده‌های خروجی
--strace               استفاده از strace به‌جای گزینه
                          -recorder در TeX
--copy                 کپی کردن پرونده‌ها به‌جای ایجاد
                          پیوندهای نمادین
--flat                 نادیده‌گرفتن مسیرها، عدم ساخت دایرکتوری
                          درون دایرکتوری مقصد
--(no)texhash          اجرای texhash، استفاده از --notexhash برای MiKTeX
--exclude-ext <ext>    مستثنی کردن پرونده‌های با پسوند <ext>
--cmd-tex <cmd>        دستور کامپایلر TeX
--cmd-kpsewhich <cmd>  دستور برای kpsewhich
--cmd-texhash <cmd>    دستور برای texhash
--cmd-strace <cmd>     دستور برای strace
--verbose              خروجی با جزئیات کامل
--help                 پیام راهنمای کوتاه
--man                  مستندات کامل
--version              چاپ نگارش برنامه

اجرای برنامه

ابتدا mkjobtexmf یک برنامه، معمولاً TeX، را اجرا می‌کند. کامپایلر TeX با گزینه "--cmd-tex" پیکربندی می‌شود. اگر پسوند نام پرونده با .tex تفاوت داشته باشد، می‌توان از گزینه "--texname" استفاده کرد:

mkjobtexmf --jobname foo --texname foo.ltx

حتی موارد پیچیده‌تر نیز امکان‌پذیر است:

mkjobtexmf --jobname foo --texname '\def\abc{...}\input{foo}'

اگر برنامه‌ای غیر از TeX باید استفاده شود (dvips و...)، می‌توان این برنامه را پس از "--" قرار داد:

mkjobtexmf --jobname foo -- dvips foo

ثبت پرونده‌ها

دو روش برای دستیابی به نام پرونده‌های استفاده‌شده در دسترس است:

ثبت‌کننده TeX
برخی توزیع‌های TeX (مانند Web2C) از گزینه -recorder برای کامپایلرهای TeX خود پشتیبانی می‌کنند. در این حالت کامپایلر TeX پرونده‌ای با پسوند .fls تولید می‌کند که پرونده‌های ورودی و خروجیِ استفاده‌شده را ثبت می‌نماید.
برنامه strace
این برنامه فراخوان‌های سیستمی و سیگنال‌ها را ردگیری می‌کند. در اینجا برای ثبت پرونده‌های استفاده‌شده به کار می‌رود.

تحلیل و پیوند/کپی پرونده‌های یافته‌شده

دایرکتوری نتیجه jobname.mjt ایجاد می‌شود. در داخل آن، درخت TEXMF خروجی ساخته می‌شود. هر پروندهٔ یافته‌شده در برابر فهرستی از مسیرهای درخت‌های TEXMF مقایسه می‌گردد. در صورت یافتن تطابق، پرونده به درخت TEXMF پیوند داده یا کپی می‌شود. فهرست مسیرها توسط برنامه kpsewhich تولید می‌گردد.

اگر پرونده نتواند به یک درخت TEXMF نگاشت شود و نام پرونده نسبی باشد، مستقیماً به داخل دایرکتوری نتیجه jobname.mjt پیوند داده یا کپی می‌شود. نام‌های پرونده مطلق و همچنین مسیرهای حاوی پیوند به دایرکتوری‌های والد پشتیبانی نمی‌شوند.

پیوندهای نمادین به‌طور پیش‌فرض ایجاد می‌شوند. اگر گزینه "--copy" داده شود یا پیوند نمادین در دسترس نباشد، پرونده‌ها کپی خواهند شد.

نام پردازش است. `<jobname>.tex' به‌عنوان مقدار پیش‌فرض پرونده TeX به کار می‌رود و <jobname> برای نام‌گذاری دایرکتوری‌ها و پرونده‌های گوناگون استفاده می‌شود. بخش "فایل‌ها (FILES)" را ببینید.
نام پرونده ورودی TeX، در صورتی که با <jobname>.tex تفاوت داشته باشد.
گزینه اضافی برای کامپایلر TeX؛ نمونه‌ها عبارتند از "--ini" یا "--shell-escape". این گزینه می‌تواند بیش از یک بار مشخص شود.
نام دایرکتوری مقصدی را که نتیجه در آن جمع‌آوری می‌شود تعیین می‌کند. به‌طور پیش‌فرض دایرکتوری‌ای با نام پردازش و پسوند `.mjt' در دایرکتوری جاری تولید می‌گردد.
پرونده‌های خروجی را نیز اضافه می‌کند.
استفاده از روش مبتنی بر برنامه strace؛ بخش "توضیحات (DESCRIPTION)" را ببینید.
پرونده‌ها به جای ایجاد پیوند نمادین، کپی می‌شوند.
پرونده‌ها بدون اجزای مسیر پیوند یا کپی می‌شوند. دایرکتوری مقصد شامل فهرستی یک‌دست از پرونده‌ها یا پیوندها بدون هیچ دایرکتوری‌ای خواهد بود.

پرونده‌های `ls-R' و `aliases' نادیده گرفته می‌شوند.

پرونده‌های با پسوند <ext> مستثنی می‌شوند. این گزینه می‌تواند چندین بار مشخص شود یا می‌توان از فهرستی از پسوندها که با کاما از هم جدا شده‌اند استفاده کرد. نمونه‌ها:
--exclude-ext aux --exclude-ext log --exclude-ext toc

یکسان است با

--exclude-ext aux,log,toc
--(no)texhash
به‌طور پیش‌فرض پرونده `ls-R' در درخت `texmf' تولید می‌شود، زیرا این همان پایگاه‌داده نام پرونده‌ها است که ممکن است در TeX Live استفاده شود. از آنجا که MiKTeX از سازوکار متفاوتی استفاده می‌کند، دستور `texhash' آن پرونده‌های `ls-R' را تولید نکرده و "--notexhash" فراخوانی `texhash' را غیرفعال می‌سازد.
دستور مربوط به کامپایلر TeX. مقدار پیش‌فرض pdflatex است.
دستور برای kpsewhich.
دستور برای به‌روزرسانی پایگاه‌داده نام پرونده‌ها در درخت texmf تولیدشده. مقدار پیش‌فرض texhash است.
دستور برای strace.
نمایش پیام‌ها با جزئیات کامل.
نمایش پیام راهنما.
چاپ صفحه راهنما.
چاپ نسخه برنامه و خروج.

پرونده TeX با نام test.tex با استفاده از روش ثبت‌کننده TeX:

mkjobtexmf --jobname test

پرونده TeX با نام test.tex با استفاده از LaTeX:

mkjobtexmf --jobname test --cmd-tex latex

تولید قالب (Format):

mkjobtexmf --jobname test --texopt -ini --texname pdflatex.ini

نمونه‌ای از نحوه استفاده از درخت جدید texmf (لینوکس/bash):

TEXMF=!!test.mjt/texmf pdflatex test

نمونه ایجاد بایگانی zip (لینوکس/bash):

(cd test.mjt && zip -9r ../test .)

نمونه ایجاد بایگانی tar:

tar cjhvf test.tar.bz2 -C test.mjt .

نرم‌افزار آزمایشی
گزینه‌ها، مقادیر پیش‌فرض و نحوه عملکرد برنامه ممکن است در نگارش‌های آینده تغییر کنند.
در حال حاضر روش با strace این پرونده‌ها را ثبت می‌کند، اما ثبت‌کننده TeX این کار را انجام نمی‌دهد. پرونده‌های texmf.cnf برای تنظیمات متغیرها مفید هستند. از آنجا که تنها یک درخت TEXMF داریم، احتمالاً بخش‌های مسیر باید بازنویسی شوند.
تنظیمات در متغیرهای محیطی
به هیچ وجه ذخیره نمی‌شوند.
تداخل‌ها
برنامه از یک دایرکتوری مقصد و حداکثر یک درخت TEXMF برای نتیجه استفاده می‌کند. با این حال پرونده‌های مبدأ می‌توانند از دایرکتوری‌ها و درخت‌های TEXMF متفاوتی بیایند. بنابراین تداخل نام‌ها محتمل است.

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

پرونده پیکربندی
کاربر را از تایپ مکرر گزینه‌های مشابه بی‌نیاز می‌کند.
ثبت ناقص
ایرادات در ثبت پرونده‌های TeX ممکن است به ثبت ناقص پرونده منجر شود (برای نمونه pdfTeX 1.40.3 پرونده‌های .pfb و .pk را ثبت نمی‌کند).
...

<jobname>.mjt/
دایرکتوری‌ای که درخت texmf حاصل و پیوندهای نمادین در آن ذخیره می‌شوند. با گزینه "--destdir" قابل تغییر است.
<jobname>.fls
نام پرونده ثبت‌کننده TeX.
<jobname>.strace
پرونده گزارشی (لاگ) که نتیجه strace در آن ذخیره می‌شود.

Heiko Oberdiek, email: heiko.oberdiek at googlemail.com

حق نشر ۲۰۰۷، ۲۰۰۸، ۲۰۱۱ توسط Heiko Oberdiek.

این کتابخانه یک نرم‌افزار آزاد است؛ می‌توانید آن را تحت همان شرایط پرل (مجوز هنری پرل/مجوز عمومی گنو GPL نگارش ۲) بازتوزیع کرده یا تغییر دهید.

2007/04/16 v0.1
* نخستین نگارش آزمایشی.
2007/05/09 v0.2
* رفع غلط املایی در نام گزینه.
2007/09/03 v0.3
* گزینه‌های جدید: "--copy", "--flat", "--destdir"
2007/09/04 v0.4
* رفع باگ در map_files_texmf.
2007/09/06 v0.5
* افزودن پشتیبانی از `configure'. (با تشکر از Norbert Preining برای نوشتن نخستین نسخه پیکربندی.)
2008/04/05 v0.6
* رفع اشکال جزئی در هدف `uninstall' در پرونده `Makefile.in'. (با تشکر از Karl Berry)
2008/06/28 v0.7
* رفع اشکال برای گزینه ناشناخته `"--cmd-strace"'. (با تشکر از Juho Niemelä)
2011/11/10 v0.8
* حذف دونقطه از مشخصات درایو هنگام ساخت دایرکتوری‌ها.
* گزینه "--(no)texhash" اضافه شد.
* پشتیبانی نسبی از MiKTeX (با تشکر از Ulrike Fischer).
* اصلاحات گوناگون در تولید مستندات.
* گزینه‌های "--exclude-ext" و "--version" اضافه شدند.
2011-11-10 v0.8 perl v5.8.1