.TH TANGLE 1 "25 January 2026" "Web2C 2026" .\"===================================================================== .if n .ds MF Metafont .if t .ds MF Metafont .if t .ds TX \fRT\\h'-0.10m'\\v'0.17v'E\\v'-0.17v'\\h'-0.06m'X\fP .if n .ds TX TeX .ie t .ds OX \fIT\h'-0.17m'\v'+0.21m'E\v'-0.21m'\h'-0.04m'X\fP .el .ds OX TeX .\"===================================================================== .SH "نام (NAME)" tangle, otangle \- تبدیل اسناد برنامه‌نویسی ادیبانه WEB به پاسکال .SH "خلاصه دستور (SYNOPSIS)" \f[B]tangle\f[R] [\f[I]options\f[R]] \f[I]webfile\f[R][\f[B].web\f[R]] [{\f[I]changefile\f[R][\f[B].ch\f[R]]|\f[B]-\f[R]} [\f[I]outfile\f[R][\f[B].p\f[R]]]] .\"===================================================================== .SH "توضیحات (DESCRIPTION)" برنامه .B tangle یک سند منبع برنامه‌نویسی ادیبانه (Literate Programming) به زبان WEB را به یک برنامه Pascal تبدیل می‌کند. علاوه بر پردازش توسط کامپایلر Pascal، امروزه خروجی Pascal اغلب به زبان C ترجمه می‌شود؛ این همان روشی است که برنامه‌های خانواده \*(TX در \*(TX Live کامپایل می‌شوند. .PP زبان WEB به شما امکان می‌دهد سندی واحد آماده کنید که شامل تمام اطلاعات لازم برای تولید یک برنامه کامپایل‌پذیر Pascal و نیز یک سند قالب‌بندی‌شده مناسب برای توصیف برنامه با هر میزان جزئیاتی است که نویسنده مایل باشد. کاربر WEB باید با هر دوی \*(TX و Pascal آشنا باشد. همچنین WEB یک سامانه ماکروی نسبتاً ساده اما کافی فراهم می‌کند که اجازه می‌دهد یک برنامه Pascal به صورت ماژول‌های کوچک و با هر ترتیبی دلخواه نوشته شود. .PP خط فرمان باید شامل یک، دو یا سه نام فایل باشد. اولین فایل به عنوان فایل WEB در نظر گرفته می‌شود؛ اگر پسوندی نداشته باشد، پسوند «.web» به آن افزوده می‌شود. .PP اگر نام فایل دومی ارائه شود، به عنوان فایل تغییرات در نظر گرفته شده و در صورت نبود پسوند، «.ch» به آن اضافه می‌شود. فایل تغییرات همان‌طور که در مستندات سامانه WEB توضیح داده شده است، بخش‌هایی از فایل WEB را رونویسی (override) می‌کند. در صورت عدم ذکر نام فایل دوم، فایل تغییراتی وجود نخواهد داشت. .PP اگر نام فایل سومی داده شود، به عنوان فایل خروجی Pascal در نظر گرفته می‌شود و در صورت نبود پسوند، «.p» به آن اضافه می‌گردد. برای تعیین فایل خروجی بدون اعمال تغییرات، می‌توانید از «\-» برای آرگومان دوم استفاده کنید که به معنی فایل تغییرات خالی است (و نه stdin). در صورتی که نام فایل سوم داده نشود، نام فایل Pascal با افزودن «.p» به نام ریشه فایل WEB ساخته می‌شود. .PP فایل خروجی در خطوطی با ۷۲ کاراکتر یا کمتر فشرده می‌شود و تنها امتیاز آن به خوانایی، پایان یافتن خطوط در نقطه‌ویرگول‌ها در صورت امکان است. .PP اگر برنامه WEB از ویژگی داخلی مدیریت رشته (رشته‌های درون نقل‌قول دوتایی) استفاده کند، فایل خروجی دومی به عنوان فایل مخزن رشته‌ها (string pool file) ایجاد می‌شود که نام آن همیشه با افزودن «.pool» به ریشه نام فایل Pascal تشکیل می‌گردد. .PP نسخه .B otangle از دامنه گسترده‌تری از کاراکترها پشتیبانی می‌کند. این نسخه برای پروژه Omega نوشته شد، نخستین نسخه \*(TX که از یونیکد پشتیبانی می‌کرد و اکنون به عنوان برنامه جانشین .BR aleph (1) ارائه می‌شود. .\"===================================================================== .SH "گزینه‌ها (OPTIONS)" برای مشاهده جزئیات تجزیه خط فرمان، به .BR tex (1) مراجعه کنید. .PP برخی از این گزینه‌ها ممکن است خروجی را برای پردازش توسط یک کامپایلر Pascal نامناسب سازند. .TP .B --help نمایش پیام راهنما و خروج. .TP .BI --length \ number تنها مقایسه تعداد .I number کاراکتر اول شناسه‌ها هنگام بررسی تداخل. مقدار پیش‌فرض ۳۲ است؛ برنامه اصلی .B tangle از ۷ استفاده می‌کرد. .TP .B --loose هنگام بررسی تداخل میان شناسه‌ها، تنظیمات گزینه‌های .BR --lowercase ، .BR --mixedcase ، .BR --uppercase و .B --underline را رعایت می‌کند. این حالت پیش‌فرض است. .TP .B --lowercase تبدیل تمام شناسه‌ها به حروف کوچک. .TP .B --mixedcase حفظ بزرگی و کوچکی حروف شناسه‌ها. این حالت پیش‌فرض است. .TP .B --strict هنگام بررسی تداخل میان شناسه‌ها، خطوط زیرین حذف شده و ابتدا تمام شناسه‌ها به حروف بزرگ تبدیل می‌شوند. .TP .B --underline حفظ خطوط زیرین (همچنین شناخته‌شده به عنوان underscore) در شناسه‌ها. .TP .B --uppercase تبدیل تمام شناسه‌ها به حروف بزرگ. این رفتار برنامه اصلی .BR tangle است. .TP .B --version نمایش اطلاعات نسخه و خروج. .PP برنامه .B otangle فقط از گزینه‌های \fB--help\fP و \fB--version\fP پشتیبانی می‌کند. .\"===================================================================== .SH "محیط (ENVIRONMENT)" این برنامه‌ها با استفاده از متغیر محیطی WEBINPUTS به دنبال فایل‌های ورودی می‌گردند. اگر این متغیر مقداردهی نشده باشد، از پیش‌فرض سیستم استفاده می‌شود. برای جزئیات نحوه جستجو، به راهنمای Kpathsea در نشانی https://tug.org/kpathsea مراجعه کنید. .\"===================================================================== .SH "همچنین ببینید (SEE ALSO)" Donald E. Knuth, .IR "The WEB System of Structured Documentation" . .br https://mirrors.ctan.org/info/knuth-pdf/web/webman.pdf .PP Donald E. Knuth, .IR Literate Programming, CSLI Lecture Notes, no. 27. .br https://www-cs-faculty.stanford.edu/~knuth/lp.html .PP Donald E. Knuth, .I "\*(OX: The Program" (جلد B از .IR "Computers & Typesetting" ). .br Donald E. Knuth, .I "\*(MF: The Program" (جلد D از .IR "Computers & Typesetting" ). .br این دو مورد اخیر با اختلاف بزرگ‌ترین نمونه‌های موجود از برنامه‌های WEB هستند. .PP موضوع برنامه‌نویسی ادیبانه در CTAN: https://ctan.org/topic/litprog .br صفحه بسته در CTAN: https://ctan.org/pkg/tangle .br بخش مربوطه در راهنمای Web2c: https://tug.org/texinfohtml/web2c.html#tangle-invocation .br کد منبع حروف‌چینی‌شده برای تمام برنامه‌های اصلی WEB استنفورد: https://ctan.org/pkg/knuth-pdf .\"===================================================================== .SH "نویسندگان (AUTHORS)" سامانه WEB توسط Donald E. Knuth بر اساس سامانه پیشین به نام DOC (پیاده‌سازی‌شده توسط Ignacio Zabala) و با الهام از کارهای قابل‌توجه پیشین، به‌ویژه مفهوم «holon programming» متعلق به Pierre-Arnoul de Marneffe (https://github.com/holon-scribe/holon-programming) طراحی شد. .PP به‌روزرسانی‌های مربوط به Omega توسط John Plaice و Yannis Haralambous نوشته شد. .PP خود برنامه‌های .B tangle و .B weave به زبان WEB نوشته شده‌اند. این سامانه در ابتدا در دانشگاه استنفورد توسط Howard Trickey و در دانشگاه کرنل توسط Pavel Curtis به Unix پورت شد. .PP فهرست بحث عمومی و گزارش باگ‌ها: https://lists.tug.org/tex-k