PERLTEX(1) PERLTEX(1)

perltex - امکان تعریف ماکروهای LaTeX با استفاده از کدهای Perl

perltex [--help] [--latex=program] [--[no]safe] [--permit=feature] [--makesty] [latex options]

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

بدیهی است که قابلیت برنامه‌نویسی Perl می‌تواند مکمل نقاط قوت حروف‌چینی LaTeX باشد. perltex ابزاری است که همزیستی میان این دو سامانه را ممکن می‌سازد. تمام کاری که کاربر باید انجام دهد، کامپایل کردن سند LaTeX با استفاده از perltex به جای latex است. (perltex در واقع یک پوشش (wrapper) برای latex است، بنابراین هیچ‌کدام از قابلیت‌های latex از دست نمی‌رود.) اگر سند در دیباچه (preamble) خود شامل دستور "\usepackage{perltex}" باشد، آنگاه ماکروهای "\perlnewcommand" و "\perlrenewcommand" در دسترس قرار خواهند گرفت. رفتار این ماکروها دقیقاً مانند "\newcommand" و "\renewcommand" در LaTeX است، با این تفاوت که بدنه ماکرو به جای کد LaTeX، شامل کد Perl است.

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

نمایش اطلاعات پایه درباره نحوه استفاده.
مشخص کردن یک برنامه برای استفاده به جای latex. برای مثال، "--latex=pdflatex" سند داده‌شده را با استفاده از pdflatex به جای latex معمولی حروف‌چینی می‌کند.
--[no]safe
فعال یا غیرفعال کردن محیط ایزوله (sandboxing). در حالت پیش‌فرض --safe، perltex کد ناشی از یک ماکروی "\perlnewcommand" یا "\perlrenewcommand" را درون یک محیط محافظت‌شده اجرا می‌کند که از عملیات «ناامن» مانند دسترسی به فایل‌ها یا اجرای برنامه‌های خارجی جلوگیری می‌نماید. مشخص کردن --nosafe به سند LaTeX اختیار تام (carte blanche) می‌دهد تا هر کد دلخواه Perl را اجرا کند، از جمله کدهایی که می‌توانند به فایل‌های کاربر آسیب برسانند. برای اطلاعات بیشتر Safe را ببینید.
اجازه دادن به انجام عملیات‌های خاص در Perl. گزینه --permit که می‌تواند بیش از یک بار در خط فرمان مشخص شود، امکان کنترل دقیق‌تر روی محیط ایزوله perltex را فراهم می‌سازد. برای اطلاعات بیشتر Opcode را ببینید.
تولید یک فایل استایل LaTeX به نام noperltex.sty. جایگزین کردن خط "\usepackage{perltex}" در سند با "\usepackage{noperltex}" همان خروجی را تولید می‌کند، اما به PerlTeX نیازی ندارد؛ این امر سند را برای توزیع میان افرادی که PerlTeX را نصب ندارند مناسب می‌سازد. عیب این روش این است که فایل noperltex.sty مختص همان سندی است که آن را تولید کرده است. هرگونه تغییر در تعاریف ماکروهای PerlTeX یا فراخوانی‌های ماکرو در سند، مستلزم اجرای مجدد perltex با گزینه --makesty خواهد بود.

سپس به دنبال این گزینه‌ها، هر گزینه‌ای که به طور معمول به latex (یا هر برنامه‌ای که با "--latex" مشخص شده است) ارسال می‌شود، قرار می‌گیرد؛ از جمله، برای نمونه، نام فایل .tex برای کامپایل.

در ساده‌ترین حالت، perltex درست مانند latex اجرا می‌شود:

perltex myfile.tex

برای استفاده از pdflatex به جای latex معمولی، از گزینه --latex استفاده کنید:

perltex --latex=pdflatex myfile.tex

اگر LaTeX خطای «"trapped by operation mask"» را نشان داد و شما به فایل .tex که قصد کامپایل آن را دارید اطمینان دارید که کد مخرب Perl را اجرا نمی‌کند (مثلاً به این دلیل که خودتان آن را نوشته‌اید)، می‌توانید سازوکارهای امنیتی perltex را با گزینه --nosafe غیرفعال کنید:

perltex --nosafe myfile.tex

دستور زیر به اسناد تنها مجوزهای پیش‌فرض perltex (":browse") را به همراه قابلیت باز کردن فایل‌ها و فراخوانی دستور "time" اعطا می‌کند:

perltex --permit=:browse --permit=:filesys_open
  --permit=time myfile.tex

perltex از متغیرهای محیطی زیر پیروی می‌کند:

نام فایل کامپایلر LaTeX را مشخص می‌کند. کامپایلر LaTeX به طور پیش‌فرض «"latex"» است. متغیر محیطی "PERLTEX" این پیش‌فرض را بازنویسی می‌کند، و گزینه خط فرمان --latex (بخش «گزینه‌ها (OPTIONS)» را ببینید) آن را نیز لغو و بازنویسی می‌نماید.

هنگام کامپایل jobname.tex، perltex از فایل‌های زیر استفاده می‌کند:

فایل گزارش (log) نوشته‌شده توسط Perl؛ مفید برای اشکال‌زدایی ماکروهای Perl
اطلاعات ارسال‌شده از LaTeX به Perl
اطلاعات ارسال‌شده از Perl به LaTeX
فایل «نشانگر» (flag) که وجود آن نشان می‌دهد jobname.topl حاوی داده‌های معتبر است
فایل «نشانگر» (flag) که وجود آن نشان می‌دهد jobname.frpl حاوی داده‌های معتبر است
فایل «نشانگر» (flag) که وجود آن نشان می‌دهد jobname.ffpl حذف شده است
فایل تولیدشده توسط noperltex.sty برای هر فراخوانی ماکروی PerlTeX

محیط ایزوله (sandbox) perltex به طور پیش‌فرض روی چیزی تنظیم شده است که Opcode آن را «":browse"» می‌نامد.

latex(1), pdflatex(1), perl(1), Safe(3pm), Opcode(3pm)

Scott Pakin, scott+pt@pakin.org

2024-12-03 v2.3