CTANIFY(1) CTANIFY(1)

ctanify - آماده‌سازی یک بسته برای بارگذاری در CTAN

ctanify [--pkgname=string] [--[no]auto] [--tdsonly=filespec ...] [--[no]unixify] [--[no]skip] [--tdsdir=dirname ...] [--tex=macro_pkg] [--[no]miscify] [--[no]tds] filespec[=dirname] ...

ctanify [--help]

ctanify [--version]

ctanify برای توسعه‌دهندگانی در نظر گرفته شده است که می‌خواهند بستهٔ LaTeX خود را از طریق «شبکهٔ جامع بایگانی تک» (CTAN) منتشر کنند. با دریافت فهرستی از نام‌های فایل، ctanify یک tarball (یک فایل .tar.gz) ایجاد می‌کند که فایل‌ها در آن با ساختار ترجیحی CTAN چیده شده‌اند. علاوه بر این، این tarball شامل یک فایل ZIP (.zip) با رونوشت‌هایی از تمام فایل‌های چیده‌شده در «ساختار استاندارد دایرکتوری تک» (TDS) است که گنجاندن بسته را در توزیع TeX Live تسهیل می‌کند.

ctanify گزینه‌های خط فرمان زیر را می‌پذیرد:

نمایش اطلاعات استفادهٔ اولیه و خروج.
نمایش شماره نسخهٔ ctanify و خروج.
مشخص کردن صریح نام بسته. به‌طور معمول، ctanify از نام پایهٔ نخستین فایل .ins یا .sty فهرست‌شده به عنوان نام بسته استفاده می‌کند. نام بسته، نام پایهٔ فایل tarball تولیدشده توسط ctanify را تشکیل می‌دهد.
عدم افزودن خودکار فایل‌ها به tarball. به‌طور معمول، ctanify تمام فایل‌های ذکرشده در یک فایل .ins را به‌طور خودکار می‌گنجاند.
مشخص کردن زیرمجموعه‌ای از فایل‌های نام‌برده‌شده در خط فرمان برای گنجاندن صرفاً در فایل TDS ZIP، و نه در دایرکتوری بستهٔ CTAN. استفاده از نویسه‌های عمومی (wildcards) مجاز است (در صورت لزوم داخل نقل‌قول قرار گیرد)، و از --tdsonly می‌توان چندین بار در همان خط فرمان استفاده کرد.

حداقل یک نام فایل باید در خط فرمان مشخص شود. ctanify فایل‌ها را بر اساس پسوندشان به‌طور خودکار در درخت TDS قرار می‌دهد، اما این رفتار را می‌توان با مشخص کردن صریح دایرکتوری TDS مقصد به شکل filespec=dirname لغو کرد. نویسه‌های عمومی (wildcards) برای filespec مجاز هستند (در صورت لزوم داخل نقل‌قول قرار گیرند).

بعید است گزینه‌های زیر در استفادهٔ عادی ضروری باشند. آن‌ها برای شرایط خاصی که ممکن است پیش بیاید ارائه شده‌اند.

به‌جای ایجاد یک tarball برای CTAN، صرفاً درخت TDS بسته را با ریشه در دایرکتوری dirname ایجاد کند.
تأکید بر اینکه فایل‌های بسته‌بندی‌شده برای CTAN، یک بستهٔ ماکروی TeX غیر از LaTeX را هدف قرار داده‌اند. برخی از نمونه‌های رایج macro_pkg عبارتند از "generic"، "plain" و "context".
ذخیرهٔ فایل‌های متنی بدون تغییر، به‌جای تبدیل نویسهٔ پایان خط آن‌ها به قالب Unix (یک نویسهٔ linefeed تکی بدون نویسهٔ carriage-return)، اگرچه CTAN ترجیح می‌دهد تمام فایل‌ها را با نویسه‌های پایان خط قالب Unix دریافت کند.
اجبار ctanify به گنجاندن فایل‌هایی مانند فایل‌های پنهان Unix، فایل‌های پشتیبان Emacs و فایل‌های متادیتای سیستم کنترل نسخه، که همگی مواردی هستند که CTAN تمایلی به دریافت آن‌ها ندارد.
تغییر نام دایرکتوری‌های حاوی یک تک‌فایل به "misc". (به‌عنوان مثال، تغییر نام "tex/latex/mypackage/mypackage.sty" به "tex/latex/misc/mypackage.sty".) این کار در گذشته یک رویهٔ معمول بود اما اکنون شدیداً منع می‌شود.
جاسازی نکردن فایل .tds.zip در tarball تولیدشده.

"Failed to copy filename (No such file or directory)"
این پیام معمولاً به دلیل یک فایل .ins رخ می‌دهد که filename را تولید می‌کند اما هنوز برای تولید واقعی filename از طریق tex یا latex اجرا نشده است. ctanify به‌طور خودکار tex یا latex را اجرا نمی‌کند؛ این کار باید به‌صورت دستی توسط کاربر انجام شود. برای اطلاعات بیشتر به بخش «هشدارها» ("CAVEATS") مراجعه کنید.
"Modified filename to use Unix line endings (use --no-unixify to prevent this)"
برای سازگاری و یکدستی، CTAN تمام فایل‌های متنی را با پایان خط سبک Unix ذخیره می‌کند (یک نویسهٔ linefeed تکی بدون نویسهٔ carriage-return). برای کمک به این امر، ctanify به‌طور خودکار پایان خط‌های غیر از سبک Unix را جایگزین می‌کند. پیام مذکور صرفاً به کاربر اطلاع می‌دهد که نباید از دیدن اندازهٔ متفاوت برای filename در tarball در مقایسه با filename اصلی روی دیسک (که ctanify هرگز آن را تغییر نمی‌دهد) نگران شود. اگر دلیل موجهی برای حفظ پایان خط‌های اصلی وجود دارد (که به‌ندرت چنین است)، می‌توان از گزینهٔ --no-unixify برای جلوگیری از تغییر هرگونه فایل توسط ctanify هنگام ذخیره در tarball استفاده کرد.
"Excluding filename (use --no-skip to force inclusion)"
ctanify به‌طور معمول فایل‌هایی را که CTAN ترجیح می‌دهد دریافت نکند نادیده می‌گیرد--حتی زمانی که صریحاً در خط فرمان مشخص شده باشند--. این موارد شامل فایل‌هایی است که نام آن‌ها با "." شروع می‌شود (فایل‌های پنهان Unix)، به "~" ختم می‌شود (پشتیبان‌های خودکار Emacs)، یا از یک دایرکتوری CVS یا .svn می‌آیند (فایل‌های فرادادهٔ سیستم کنترل نسخه). اگر دلیل موجهی برای ارسال چنین فایل‌هایی به CTAN وجود دارد (که به‌ندرت چنین است)، می‌توان از گزینهٔ --no-skip استفاده کرد تا از نادیده گرفتن آن‌ها توسط ctanify جلوگیری شود.
"CTAN prefers having only PDF documentation (re: filename)"
به دلیل محبوبیت قالب PDF، شبکهٔ CTAN تمایل دارد تا حد ممکن مستندات در قالب PDF توزیع شوند. پیام فوق از کاربر می‌خواهد در صورت امکان هرگونه مستندات PostScript یا DVI را با PDF جایگزین کند. (ctanify همچنان مستندات PostScript و DVI را در tarball می‌گنجاند؛ پیام مذکور صرفاً یک درخواست محترمانه است.)
"Not including filename in the TDS tree (unknown extension)"
ctanify فایل‌ها را بر اساس جدولی از پسوندهای فایل در درخت TDS قرار می‌دهد. به‌عنوان مثال، تمام فایل‌های .sty در tex/latex/package-name قرار می‌گیرند. اگر ctanify نداند فایلی را کجا قرار دهد، آن را در هیچ جا قرار نمی‌دهد. برای توضیحات در مورد نحوهٔ مشخص کردن صریح مکان هدف یک فایل در درخت TDS، به آخرین بند از بخش «گزینه‌ها» ("OPTIONS") مراجعه کنید. برای پسوندهای فایل رایجی که احیاناً در جدول ctanify وجود ندارند، به نویسندهٔ ctanify در نشانی ذکرشده در زیر در بخش «نویسندگان» ("AUTHOR") اطلاع دهید..SH "مثال‌ها (EXAMPLES)"

معمولاً، تنها کاری که باید انجام دهید این است که نام فایل .ins (یا در صورتی که بسته از DocStrip استفاده نمی‌کند، فایل .sty) و در صورت وجود، مستندات از پیش ساخته‌شده را به ctanify بدهید:

$ ctanify mypackage.ins mypackage.pdf README
  490347  mypackage.tar.gz
              1771  mypackage/README
             15453  mypackage/mypackage.dtx
              1957  mypackage/mypackage.ins
            277683  mypackage/mypackage.pdf
            246935  mypackage.tds.zip
                        1771  doc/latex/mypackage/README
                      277683  doc/latex/mypackage/mypackage.pdf
                       15453  source/latex/mypackage/mypackage.dtx
                        1957  source/latex/mypackage/mypackage.ins
                        1725  tex/latex/mypackage/mypackage.sty

ctanify اندازه برحسب بایتِ تاربال خروجی، هر فایل درون آن و هر فایلِ موجود در فایل ZIP درون بسته را در خروجی نمایش می‌دهد. در مثال بالا، توجه کنید که چگونه ctanify به‌طور خودکار تمامی عملیات زیر را انجام داد:

  • قرار دادن mypackage.dtx (یافت‌شده از طریق تجزیهٔ mypackage.ins) در هر دو دایرکتوری mypackage و فایل ZIP،
  • قرار دادن mypackage.sty (یافت‌شده از طریق تجزیهٔ mypackage.ins) درون فایل ZIP، اما به این دلیل که یک فایل تولیدشده است، نه در دایرکتوری mypackage، و
  • قرار دادن تمام فایل‌ها در دایرکتوری‌های مناسب TDS (مستندات، کد منبع، بستهٔ اصلی) درون فایل ZIP.

تصور کنید تولید دستی یک فایل mypackage.tar.gz معادل چقدر کار می‌برد. ctanify قطعاً گزینه‌ای ساده‌تر و سریع‌تر است.

ctanify فرض می‌کند که فایل‌های PostScript مستندات هستند و بنابراین آن‌ها را در زیرمسیر doc/latex/package-name/ در درخت TDS درون فایل ZIP ذخیره می‌کند. با این حال، فرض کنید یک بستهٔ LaTeX از مجموعه‌ای از فایل‌های PostScript برای کنترل خروجی dvips استفاده می‌کند. در این صورت، باید به ctanify گفته شود که آن فایل‌های PostScript را در دایرکتوری بسته قرار دهد، نه در دایرکتوری مستندات.

$ ctanify mypackage.ins "mypackage*.ps=tex/latex/mypackage"

ctanify به زبان Perl نوشته شده است و برای اجرا به نصب بودن Perl نیاز دارد.
ctanify برای ایجاد یک تاربال فشرده (.tar.gz) به برنامه‌های GNU tar و gzip نیاز دارد.
ctanify برای بایگانی درخت TDS درون تاربال اصلی از برنامهٔ zip استفاده می‌کند.

ctanify خودبه‌خود tex یا latex را فراخوانی نمی‌کند، مثلاً برای پردازش یک فایل .ins. دلیل آن این است که ctanify در حالت کلی نمی‌داند چگونه تمام فایل‌های تولیدی یک بسته را بسازد. این‌گونه صلاح دانسته شد که کاری انجام نشود تا این‌که خطر رونویسی فایل‌های موجود .sty (یا موارد دیگر) وجود داشته باشد یا فایل‌های تولیدی قدیمی در تاربال گنجانده شوند. به‌طور خلاصه، پیش از اجرای ctanify باید به‌صورت دستی هرگونه فایل .ins را پردازش کرده و سایر فایل‌هایی را که باید به CTAN فرستاده شوند، تولید کنید.

ctanify تنها روی Linux آزمایش شده است. ممکن است روی OS X نیز کار کند. به من گفته شده است که هنگام اجرا با استفاده از Cygwin، روی Windows کار می‌کند. از داوطلبانی که مایل به کمک در پورت کردن ctanify به سایر پلتفرم‌ها هستند بسیار استقبال می‌شود.

tar(1), zip(1), latex(1), دستورالعمل‌های بارگذاری بسته‌های TDS به CTAN (http://www.ctan.org/TDS-guidelines), ساختار دایرکتوری برای فایل‌های TeX (http://tug.org/tds)

Scott Pakin, scott+ctify@pakin.org

حق نشر ۲۰۱۷ متعلق به Scott Pakin است.

این اثر ممکن است تحت شرایط مجوز عمومی پروژه لاتک (LaTeX Project Public License)، ویرایش 1.3c این مجوز یا (به انتخاب شما) هر ویرایش بعدی توزیع و/یا تغییر داده شود. جدیدترین نسخهٔ این مجوز در نشانی زیر قرار دارد:

و نسخهٔ 1.3c یا بالاتر، بخشی از تمامی توزیع‌های LaTeX نسخهٔ 2008/05/04 یا جدیدتر است.

2017-04-22 v1.9.1