PATGEN(1) General Commands Manual PATGEN(1)

patgen - تولید الگوها برای خط‌فاصله‌گذاری در TeX

patgen dictionary_file pattern_file patout_file translate_file

برنامهٔ patgen یک dictionary_file حاوی فهرستی از واژگان خط‌فاصله‌گذاری‌شده و یک pattern_file حاوی الگوهای از پیش تولیدشده (در صورت وجود) برای یک زبان خاص (نه یک فایل منبع کامل TeX؛ بخش زیر را ببینید) را می‌خواند، و فایل patout_file را به همراه الگوهای خط‌فاصله‌گذاری (الگوهای قبلی به علاوهٔ الگوهای جدیداً تولیدشده) برای آن زبان تولید می‌کند. فایل translate_file مقادیر ویژه‌زبان را برای پارامترهای left_hyphen_min و right_hyphen_min که توسط الگوریتم خط‌فاصله‌گذاری TeX استفاده می‌شوند، و همچنین نمایش خارجی نسخه(های) حروف کوچک و بزرگ تمام «حروف» آن زبان را تعریف می‌کند. جزئیات بیشتر فرایند تولید الگو مانند سطوح خط‌فاصله‌گذاری و طول الگوها به صورت تعاملی از ترمینال کاربر درخواست می‌شوند. به صورت اختیاری، patgen یک فایل واژه‌نامهٔ جدید به نام pattmp.n می‌سازد که خط‌فاصله‌های خوب و بد پیدا شده توسط الگوهای تولیدشده را نشان می‌دهد، که در آن n بالاترین سطح خط‌فاصله‌گذاری است.

الگوهای تولیدشده توسط patgen می‌توانند توسط initex(1) جهت استفاده در خط‌فاصله‌گذاری واژگان خوانده شوند. برای نمونهٔ اصلی خروجی patgen، به فایل $TEXMFMAIN/tex/generic/hyphen/hyphen.tex (در TeX Live) مراجعه کنید که حاوی الگوهایی است که TeX به طور پیش‌فرض برای انگلیسی استفاده می‌کند. در TeX Live، الگوها برای (بسیاری از) زبان‌های دیگر نیز در دسترس هستند (مگر اینکه نصب نشدن آن‌ها انتخاب شده باشد).

تمامی نام‌های فایل باید کامل باشند؛ هیچ پسوند پیش‌فرضی افزوده نمی‌شود و هیچ جستجویی در مسیر انجام نمی‌گیرد.

حروف (Letters)
هنگامی که initex الگوهای خط‌فاصله‌گذاری را تحلیل می‌کند، TeX ابتدا ماکروها را بسط می‌دهد و نتیجه باید کاملاً از ارقام (سطوح خط‌فاصله‌گذاری)، نقطه‌ها ('.'، به معنی لبهٔ کلمه) و حروف تشکیل شده باشد. در فایل‌های الگوی زبان‌های غیرانگلیسی، حروف اغلب توسط ماکروها یا دیگر ساختارهای قابل‌بسط نشان داده می‌شوند. برای اهداف patgen این‌ها صرفاً دنباله‌هایی از نویسه‌ها هستند، مشروط به این شرط که هیچ دنباله‌ای پیشوند دنبالهٔ دیگری نباشد.
فایل واژه‌نامه (Dictionary file)
یک فایل واژه‌نامه شامل فهرستی وزن‌دار از کلمات خط‌فاصله‌گذاری‌شده است، هر کلمه در یک خط، که هر کدام از ستون ۱ آغاز می‌شوند. یک رقم در ستون ۱ نشان‌دهندهٔ وزن سراسری کلمه (در ابتدا =1) است که برای تمام کلمات بعدی تا وزن سراسری بعدی اعمال می‌شود. یک رقم در موقعیتی بین نویسه‌ها نشان‌دهندهٔ وزن تنها برای همان موقعیت است.

خط‌فاصله‌ها در یک کلمه با '-'، '*' یا '.' (یا جایگزین‌های آن‌ها طبق تعریف در فایل ترجمه) به ترتیب برای خط‌فاصله‌هایی که هنوز پیدا نشده‌اند، خط‌فاصله‌های «خوب» (به‌درستی یافت‌شده توسط الگوها) و خط‌فاصله‌های «بد» (به‌اشتباه یافت‌شده توسط الگوها) مشخص می‌شوند؛ هنگام خواندن فایل واژه‌نامه، با '*' مانند '-' رفتار می‌شود و '.' نادیده گرفته می‌شود.

فایل الگو (Pattern file)
یک فایل الگو تنها حاوی الگوهایی در قالب بالا است، مثلاً از یک اجرای قبلی patgen. این فایل نباید هیچ توضیح یا دنبالهٔ کنترلی TeX داشته باشد. برای مثال، این یک فایل الگوی معتبر نیست:
% this is an invalid pattern file for TeX.
\patterns{%
 ...
}
فایل‌های الگو فقط می‌توانند شامل الگوهای واقعی باشند، یعنی «...».
فایل ترجمه (Translate file)
یک فایل ترجمه با خطی شامل مقادیر left_hyphen_min در ستون‌های ۱-۲، right_hyphen_min در ستون‌های ۳-۴، و یا یک فاصله یا جایگزین یکی از نویسه‌های «خط‌فاصله» یعنی '-'، '*' و '.' در ستون‌های ۵، ۶ و ۷ آغاز می‌شود. خطوط ورودی همانند بسیاری از برنامه‌های مرتبط با TeX با فاصله‌ها پر می‌شوند.

هر یک از خطوط بعدی یک «حرف» را تعریف می‌کند: یک نویسهٔ جداکنندهٔ دلخواه در ستون ۱، و به دنبال آن یک یا چند نمایش خارجی از آن نویسه (ابتدا حالت «کوچک» آن که برای خروجی استفاده می‌شود)، که هر کدام با نویسهٔ جداکننده پایان می‌یابند و کل دنباله با جداکنندهٔ دیگری خاتمه می‌یابد.

اگر فایل ترجمه خالی باشد، مقادیر پیش‌فرض عبارتند از left_hyphen_min=2, right_hyphen_min=3, و ۲۶ حرف کوچک a...z با نمایش‌های حروف بزرگ آن‌ها A...Z.

ورودی ترمینال (Terminal input)
پس از خواندن translate_file و هرگونه الگوهای از پیش تولیدشده از pattern_file، برنامهٔ patgen ورودی را از ترمینال کاربر درخواست می‌کند.

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

سپس، برای هر سطح خط‌فاصله‌گذاری، مقادیر عدد صحیح pat_start و pat_finish، یعنی کوتاه‌ترین و بلندترین طول الگوی مورد تجزیه و تحلیل، و همچنین good weight، bad weight و threshold، وزن‌های خط‌فاصله‌های خوب و بد و یک آستانهٔ وزنی برای الگوهای مفید.

در نهایت، تصمیم (پاسخ 'y' یا 'Y' در برابر هر چیز دیگر) در این باره که آیا فهرست کلمات خط‌فاصله‌گذاری‌شده ایجاد شود یا خیر.

$TEXMFMAIN/tex/generic/hyphen/hyphen.tex
الگوهای اصلی خط‌فاصله‌گذاری برای انگلیسی، توسط Donald Knuth و Frank Liang.
$TEXMFMAIN/tex/generic/hyphen/zerohyph.tex
یک فایل الگو بدون هیچ الگویی، برای زبان‌هایی که از خط‌فاصله‌گذاری استفاده نمی‌کنند.

Frank Liang and Peter Breitenlohner, patgen.web.

Frank Liang, Word hy-phen-a-tion by com-puter, STAN-CS-83-977, Stanford University Ph.D. thesis, 1983, http://tug.org/docs/liang

Donald E. Knuth, The TeXbook, Addison-Wesley, Appendix H.

استثنائات خط‌فاصله‌گذاری برای انگلیسی آمریکایی، نگهداری‌شده توسط ویراستاران TUGboat، و استفاده‌شده در مقاله‌های TUGboat به‌طور پیش‌فرض.
الگوهای خط‌فاصله‌گذاری گردآوری‌شده برای زبان‌های متعدد در قالب‌های مختلف.
مجموعهٔ بزرگی از الگوهای اضافی خط‌فاصله‌گذاری برای انگلیسی، گسترش‌یافته توسط Gerard Kuiken.
دایرکتوری عمومی CTAN برای الگوها و پشتیبانی از بسیاری از زبان‌های دیگر.
مقاله‌های TUGboat دربارهٔ خط‌فاصله‌گذاری و دیگر جنبه‌های پردازش اسناد وابسته به زبان.

Frank Liang نسخهٔ نخست این برنامه را نوشت. Peter Breitenlohner در سال ۱۹۹۱ بازنگری عمده‌ای برای TeX 3 روی آن اعمال کرد. نسخهٔ نخست به عنوان ضمیمهٔ گزارش فنی TeXware منتشر شد. Howard Trickey در اصل آن را به Unix پورت کرد.

فهرست گفتگوی عمومی و گزارش اشکالات: https://lists.tug.org/tex-k

10 January 2026 Web2C 2026