highlight(1) user documentation highlight(1)

highlight - مبدل همه‌منظوره کد منبع به متن قالب‌بندی‌شده

highlight [OPTIONS]... [FILES]...

Highlight کد منبع را به HTML،‏ XHTML،‏ RTF،‏ ODT،‏ LaTeX،‏ TeX،‏ BBCode، نشانه‌گذاری Pango،‏ SVG یا توالی‌های گریز XTERM یا ANSI تبدیل می‌کند. پوسته‌های رنگی متعددی در دسترس هستند. Highlight کلمات کلیدی، اعداد، رشته‌ها، توضیحات، نمادها و دستورهای پیش‌پردازنده را شناسایی می‌کند. این برنامه از حدود ۱۸۰ زبان برنامه‌نویسی که در اسکریپت‌های Lua تعریف شده‌اند، پشتیبانی می‌کند.

گسترش و ارتقای پایگاه‌دادهٔ زبان‌های برنامه‌نویسی و پوسته‌های رنگی highlight به‌سادگی امکان‌پذیر است. برای جزئیات بیشتر فایل README را ببینید.

تبدیل تمام فایل‌های منطبق با نویسه عام (wildcard) (از جستجوی بازگشتی استفاده می‌کند)
تنظیم مسیر به دایرکتوری داده‌های highlight
تنظیم مسیر به یک فایل زبان یا پوسته
چاپ این راهنما یا توضیح یک مبحث <topic> = [syntax, theme, plugin, config]
نام فایل ورودی
نام فایل خروجی
نام دایرکتوری خروجی
چاپ نوار پیشرفت در حالت دسته‌ای
تعیین نوع کد منبع، در صورت نبود پسوند فایل ورودی ضروری است. نحو می‌تواند به عنوان مسیر فایل زبان نیز تعریف شود.
مشخص کردن نوع کد منبع با نام ارائه‌شده. فایلی با این نام خوانده نخواهد شد؛ برای stdin و جهت تعیین نحو فایل پیش از هدایت (pipe) محتوای آن به highlight کاربرد دارد. این گزینه بر --syntax اولویت دارد.
بررسی اینکه آیا نحو داده‌شده قابل بارگیری است یا خیر و چاپ نتیجه (مستلزم -S یا --syntax-by-name)
چاپ اطلاعات اشکال‌زدایی در stderr؛ برای نمایش اطلاعات بیشتر تکرار کنید
عدم نمایش اطلاعات پیشرفت در حالت دسته‌ای
تولید خروجی در صورت ناشناخته بودن نحو ورودی. نحو جایگزین می‌تواند در اینجا تعیین شود، پیش‌فرض Plain Text است.
فهرست کردن اسکریپت‌های نصب‌شده <type> = [langs, themes, plugins]
پالایش اسکریپت‌ها بر اساس دسته‌های داده‌شده (مثال: --list-cat='source;script')
تنظیم حداکثر اندازه فایل ورودی (مثال‌ها: 512M، 1G؛ پیش‌فرض: 256M)
خروجی دادن num ستون نخست هر خط بدون برجسته‌سازی؛ این ستون‌ها خارج از تجزیه‌کننده نگه داشته می‌شوند، بنابراین نقل‌قول‌ها یا جداکننده‌های توضیح درون آن‌ها نمی‌توانند برجسته‌سازی بقیه کد را تغییر دهند (مثال: خروجی hg یا svn annotate)
اجرای اسکریپت افزونهٔ Lua؛ برای اعمال چندین افزونه این گزینه را تکرار کنید
تنظیم پارامتر ورودی افزونه. این می‌تواند نام یک فایل ورودی باشد (مانند 'tags').
چاپ پیکربندی مسیرها
فقط چاپ شیوه‌نامه (ببینید: --style-outfile)
نادیده گرفتن انواع ناشناختهٔ فایل‌های فهرست‌شده (مثال: --skip='bak;c~;h~')
ارسال خروجی به stdout (حالت دسته‌ای، --print-style)
بررسی اینکه آیا ورودی یک فایل متنی معتبر است یا خیر
اجرا در حالت سرویس، تا زمان دریافت سیگنال متوقف نمی‌شود
چاپ اطلاعات نسخه و حق تکثیر (کپی‌رایت)

خروجی دادن فایل در قالب مشخص‌شده <format>=[html, xhtml, latex, tex, rtf, odt, ansi, xterm256, truecolor, bbcode, pango, svg]
نام فایل تعریف شیوه (style)
عنوان سند
نام فایلی که در style-outfile گنجانده می‌شود
حذف سربرگ و پانویس سند خروجی (ببینید: --keep-injections)
قالب‌بندی مجدد خروجی به شیوه مشخص‌شده. <style>=[allman, gnu, google, horstmann, java, kr, linux, lisp, mozilla, otbs, pico, vtk, ratliff, stroustrup, webkit, whitesmith]
گنجاندن تعاریف شیوه در خروجی
طول خط پیش از شکستن (ببینید: -V، -W)
طول شماره خط شامل فاصله‌گذاری از چپ. طول پیش‌فرض: 5
تنظیم قلم (مخصوص قالب خروجی)
تنظیم اندازه قلم (مخصوص قالب خروجی)
چاپ شماره خطوط در فایل خروجی
شروع شماره‌گذاری خطوط از cnt (مستلزم -l)
خروجی دادن تنها خطوط از شماره <start> تا <end>
رسم خط راهنما در فضای خالی ابتدای هر سطح تورفتگی. خطوط خالی درون یک بلوک، تورفتگی خط بعدی را که حاوی کد است به خود می‌گیرند. راهنماها از عنصر پوسته IndentGuide یا یک مقدار پیش‌فرض کم‌رنگ استفاده می‌کنند اگر پوسته عنصری تعریف نکرده باشد (خروجی ساده ansi همواره از پیش‌فرض کم‌رنگ استفاده می‌کند)؛ در صورتی که پهنای تب تعیین نشده باشد مستلزم -t 4 است
تنظیم شیوه (پوسته) برجسته‌سازی. برای استفاده از یک پوسته Base16، پیشوند 'base16/' را اضافه کنید. پوسته می‌تواند به عنوان مسیر فایل پوسته نیز تعریف شود.
جایگزینی تب‌ها با num فاصله
تنظیم کدگذاری خروجی مطابق با کدگذاری فایل ورودی؛ اگر روی "NONE" تنظیم شود، اطلاعات کدگذاری حذف می‌گردد
شکستن خطوط پس از ۸۰ نویسه (پیش‌فرض) بدون ایجاد تورفتگی برای پارامترهای توابع و عبارت‌ها.
شکستن خطوط پس از ۸۰ نویسه (پیش‌فرض) (با احتیاط استفاده شود).
پر کردن فضای خالی ابتدای شماره خطوط با صفر
خروجی دادن هر نشانهٔ نحوی در برچسب‌های جداگانه (خروجی پرگو)
خروجی دادن تزریق‌های سربرگ و پانویس افزونه علی‌رغم استفاده از -f
خروجی دادن تمام کلمات کلیدی با بزرگی و کوچکی حروف داده‌شده در صورتی که زبان به بزرگی و کوچکی حروف حساس نباشد
حذف خط جدید پایانی. اگر mode برابر با "empty-file" باشد، تنها برای ورودی خالی حذف می‌شود
حذف توضیح مربوط به اطلاعات نسخه
حذف شماره خطوط برای خطوط شکسته شده (مستلزم -l)

افزودن لنگرگاه‌ها (anchors) به شماره خطوط (تنها در HTML)
تنظیم پیشوند نام لنگرگاه
استفاده از نام فایل ورودی به عنوان نام لنگرگاه
چاپ فایل شاخص حاوی پیوند به تمامی فایل‌های خروجی
چاپ خطوط به عنوان موارد فهرست مرتب‌شده (ordered list)
تنظیم پیشوند نام کلاس CSS؛ اگر روی "NONE" تنظیم شود، نام کلاس حذف می‌شود
خروجی دادن CSS درون هر برچسب (خروجی پرگو)
محصور کردن خروجی قطعه‌بندی‌شده درون برچسب pre (مستلزم -f)

غیرفعال کردن میان‌برهای بسته Babel
جایگزینی نقل‌قول جفتی با \dq
تطبیق خروجی برای بسته Beamer
بهبود ظاهر براکت‌ها و سایر نمادها

گنجاندن ویژگی‌های رنگ صفحه
تنظیم اندازه صفحه، <size>=[a3, a4, a5, b4, b5, b6, letter]
گنجاندن شیوه‌نامه‌های نویسه

تنظیم ارتفاع تصویر (استفاده از واحدها مجاز است)
تنظیم اندازه تصویر (ببینید: --height)

تنظیم فاصله‌گذاری رنگ پس‌زمینه (پیش‌فرض: 80)

بارگیری پیکربندی LSP از lsp.conf
تنظیم تأخیر راه‌اندازی اولیه کارساز بر حسب میلی‌ثانیه
تنظیم نام فایل اجرایی کارساز
تنظیم گزینه خط فرمان برای کارساز (قابل تکرار)
اجرای درخواست‌های شناوری (hover) (تنها خروجی HTML)
پرس‌وجو از کارساز برای انواع نشانه‌های معنایی (نیازمند LSP 3.16)
تنظیم نحوی که برای کارساز قابل درک باشد
دریافت اطلاعات خطای نحو (مستلزم --ls-hover یا --ls-semantic)
تنظیم دایرکتوری فضای کاری برای راه‌اندازی اولیه کارساز
عدم نیاز به پاسخ قابلیت‌های کارساز

برنامه Highlight این متغیرها را شناسایی می‌کند:

مسیر اسکریپت‌های پیکربندی highlight را تنظیم می‌کند
می‌تواند شامل گزینه‌های خط فرمان باشد، اما نباید شامل مسیر فایل‌های ورودی باشد.

اگر هیچ فایل ورودی یا خروجی مشخص نشود، stdin و stdout برای ورودی یا خروجی استفاده خواهند شد. همچنین خواندن از stdin می‌تواند با گزینه '-' فعال شود.

قالب خروجی پیش‌فرض: xterm256 یا در صورت مناسب بودن truecolor، در غیر این صورت HTML.

در صورتی که هیچ‌یک از گزینه‌های -c یا -I داده نشود، تعاریف شیوه در highlight.css (برای HTML، XHTML، SVG) یا highlight.sty (برای LaTeX، TeX) ذخیره می‌شوند. برای CSS، با گزینه -I تعاریف در سربرگ سند خروجی ذخیره می‌شوند؛ چنانچه -f نیز مشخص شده باشد، هیچ تعریف شیوه‌ای وجود نخواهد داشت.

قالب‌بندی مجدد کد (-F) تنها با فایل‌های ورودی C،‏ C++،‏ C# و Java کار خواهد کرد.

ویژگی‌های LSP به مسیرهای ورودی مطلق نیاز دارند و قالب‌بندی مجدد (-F) را غیرفعال می‌کنند.

شکستن خطوط با -V یا -W باعث برجسته‌سازی نادرست توضیحات طولانی تک‌خطی و دستورهای پیش‌پردازنده خواهد شد. استفاده از line-range ممکن است با عناصر نحوی چندخطی تداخل ایجاد کند. با احتیاط استفاده شود.

فایل‌های پیکربندی در /usr/share/highlight/ ذخیره شده‌اند. تعاریف زبان، پوسته‌ها و افزونه‌ها در زیردایرکتوری‌ها قرار دارند.

فایل‌های مستندات در /usr/share/doc/highlight/ و فایل‌های پیکربندی در /etc/highlight/ ذخیره شده‌اند.

برای چگونگی نصب اسکریپت‌های اختصاصی در دایرکتوری خانگی (home)، فایل README را ببینید.

تبدیل یک فایل تکی:

highlight -o hello.html -i hello.c

highlight -o hello.html hello.c

highlight -o hello.html -S c < hello.c

highlight -S c < hello.c > hello.html

توجه داشته باشید که فایلی با نام highlight.css در دایرکتوری جاری ایجاد می‌شود.

پردازش دسته‌ای فایل‌ها:

highlight --out-format=xhtml -B '*.cpp' -d /home/you/html_code/

تمام فایل‌های ‎*.cpp در دایرکتوری جاری و دایرکتوری‌های فرعی آن را به فایل‌های xhtml تبدیل کرده و خروجی را در ‎/home/you/html_code ذخیره می‌کند.

highlight --out-format=latex * -d /home/you/latex_code/

تمام فایل‌ها را به LaTeX تبدیل کرده و در ‎/home/you/latex_code/ ذخیره می‌کند.

برای بهبود کارایی پردازش دسته‌ای فایل‌ها از --quiet استفاده کنید (برای استفاده در اسکریپت‌های شل توصیه می‌شود).

از دستور highlight --out-format=xterm256 <yourfile> | less -R برای نمایش یک فایل منبع در ترمینال استفاده کنید.

برای مشاهده تمامی انواع نحوهای پشتیبانی‌شده، دستور highlight --list-scripts=langs را اجرا کنید.

Andre Simon <as@andre-simon.de>

فایل‌های README و http://www.andre-simon.de.

2023-05-11 Andre Simon