ویکی‌نبشته fawikisource https://fa.wikisource.org/wiki/%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C MediaWiki 1.47.0-wmf.24 first-letter مدیا ویژه بحث کاربر بحث کاربر ویکی‌نبشته بحث ویکی‌نبشته پرونده بحث پرونده مدیاویکی بحث مدیاویکی الگو بحث الگو راهنما بحث راهنما رده بحث رده درگاه بحث درگاه پدیدآورنده بحث پدیدآورنده برگه گفتگوی برگه فهرست گفتگوی فهرست TimedText TimedText talk پودمان بحث پودمان Event Event talk الگو:بند 10 30256 305284 69228 2026-10-19T22:08:41Z Hanooz 17889 به‌روزرسانی به کمک هوش مصنوعی 305284 wikitext text/x-wiki <!-- الگو:بند --><templatestyles src="الگو:بند/styles.css" /><span<!-- کلاس‌ها: wst-verse و بر پایهٔ align یکی از wst-verse-right ، wst-verse-left ، wst-verse-float --> class="wst-verse wst-verse-{{{align|default}}}"<!-- رنگ دلخواه (الگوی optional style): فقط وقتی مقداری داده شده باشد؛ وگرنه رنگ پیش‌فرض از شیوه‌نامه گرفته می‌شود --> {{optional style|color={{{رنگ|{{{color|{{{colour|{{{3|}}}}}}}}}}}}}}<!-- شناسهٔ قلاب (الگوی makeid): «فصل:بند» یا فقط «بند»؛ با id می‌توان آن را بازنویسی کرد --> {{makeid|{{{id|{{#if:{{{فصل|{{{chapter|{{{1|}}}}}}}}}|{{{فصل|{{{chapter|{{{1|}}}}}}}}}:}}{{{بند|{{{verse|{{{2}}}}}}}}}}}}}}><!-- محتوای متن؛ فاصلهٔ ابتدای span عمداً مثل نسخهٔ قبلی نگه داشته شده است --> <sup>{{{بی‌متن|{{{notext|{{{بند|{{{verse|{{{2}}}}}}}}}}}}}}}</sup></span><noinclude> {{توضیحات}} </noinclude> c2vrusvbxenjuk4y6hir34qzbjwkico الگو:ابرو۲ 10 31551 305288 277730 2026-10-19T22:19:40Z Hanooz 17889 Hanooz صفحهٔ [[الگو:Brace2]] را به [[الگو:ابرو۲]] منتقل کرد 277730 wikitext text/x-wiki {{#tag:math|\scriptstyle{ <!--horizontal brackets--> {{#switch:{{{2|}}}|u|up|d|down= {{#switch:{{{2|}}}|d|down=\underbrace{|u|up=\overbrace{}} <!--loop of em spaces--> {{#invoke:String|rep|\quad|{{#expr: {{{1|1}}}-1 }}}} <!--end horizontal brackets--> } <!--vertical brackets--> |#default= <!--left side bracket--> \left{{#switch:{{{2|}}}|left|l=\{|#default=.}} <!--loop of new lines--> \begin{matrix} \ {{#invoke:String|rep|\\ \|{{#expr: {{{1|1}}}-1 }}}} \end{matrix} <!--right side bracket--> \right{{#switch:{{{2|}}}|left|l=.|#default=\}\,}} <!--end math tag--> }} } }}<noinclude> {{documentation}} </noinclude> o8267sw3l311n2k54hce53vslaeewgn ویکی‌نبشته:منابع 4 36243 305266 295969 2026-10-19T19:58:32Z Hanooz 17889 305266 wikitext text/x-wiki {{process header |title = منابع |section = |previous = |next = |shortcut = |notes = }} فهرستی از منابع برخط که حاوی متون در مالکیت عمومی به زبان فارسی هستند. {|class="wikitable sortable" |- !عنوان !! پیوند !! توضیحات |- |کتابخانه و مرکز اسناد دانشگاه تهران ||{{bulleted list |وبسایت: https://lib.ut.ac.ir/faces/home.jspx |کانال تلگرام: https://telegram.me/UT_Central_Library |رده ویکی‌انبار: [[Commons:Category:Files from the Central Library and Documentation Center of the University of Tehran]]}} || |- |کتابخانه ایرانشناسی||کانال تلگرام: https://telegram.me/ketabxaneiranshenasi || |- |باشگاه ادبیات ||{{bulleted list |وبسایت: https://www.bashgaheadabiyat.com/ |کانال تلگرام: https://telegram.me/BashgaheAdabiyat |رده ویکی‌انبار: [[Commons:Category:Bashgah-e Adabiyat]]}} || |- |آرشیو اسناد اپوزیسیون ایران ||{{bulleted list |وبسایت: https://iran-archive.com/fa |کانال تلگرام: https://telegram.me/iranarchive |رده ویکی‌انبار: [[Commons:Category:Files from Archive of Iranian Opposition Documents]]}} || |- |پرتال جامع علوم انسانی ||وبسایت: https://ensani.ir/fa || |- |آرشیو اسناد و پژوهش‌های ایران - برلن ||{{bulleted list |وبسایت: https://iranarchiv.de/ |رده ویکی‌انبار: [[Commons:Category:Iranian Documents and Researches Archive - Berlin]]}} || |- |برنامه مجموعه‌های در خطر (Endangered Archives Programme) ||{{bulleted list |وبسایت: https://eap.bl.uk/project/EAP1200 |رده ویکی‌انبار: [[Commons:Category:Iranian Performance Arts Journals (Endangered Archives Programme)]]}} || |- |بایگانی مطبوعات ایران ||{{bulleted list |وبسایت: https://irpress.org/ |رده ویکی‌انبار: [[Commons:Category:Files from irpress.org]]}} || |- |آرشیو آنلاین نشریات دانشگاه منچستر ||{{bulleted list |وبسایت: https://www.library.manchester.ac.uk/services/digitisation-services/projects/nashriyah-digital-iranian-history/ |رده ویکی‌انبار: [[Commons:Category:Files from Nashriyah]]}} || |- |پایگاه مجلات تخصصی نور ||{{bulleted list |وبسایت: https://www.noormags.ir/ |رده ویکی‌انبار: [[Commons:Category:Files from noormags.ir]]}} || |- |سنا (سامانه نشریات ایران) ||{{bulleted list |وبسایت: https://sana.nlai.ir/ |رده ویکی‌انبار: [[Commons:Category:Files from sana.nlai.ir]]}} || |- |Persian Online Periodicals ||{{bulleted list |وبسایت: https://www.ioa.uni-bonn.de/translatio/de/online-periodicals/persian-online-periodicals |رده ویکی‌انبار: [[Commons:Category:Translatio - Persian Online Periodicals]]}} || |- |دنیای زنان در عصر قاجار ||{{bulleted list |وبسایت: http://www.qajarwomen.org/fa/ |رده ویکی‌انبار: [[Commons:Category:Women's Worlds in Qajar Iran Digital Archive]]}} || |- |سامانه منابع دیجیتال سازمان اسناد و کتابخانه ملی ||{{bulleted list |وبسایت: https://dl.nlai.ir/ui/forms/Index.aspx |رده ویکی‌انبار: [[Commons:Category:Files from the National Library and Archives of Iran]]}} || |- |کتابخانه، موزه و مرکز اسناد مجلس شورای اسلامی ||{{bulleted list |وبسایت: https://arian.ical.ir/ |رده ویکی‌انبار: [[Commons:Category:Library, Museum and Document Center of Iran Parliament]]}} || |- |کتابخانه آیت‌الله العظمی بروجردی ||{{bulleted list |وبسایت: https://blib.ir/ |کانال تلگرام: https://telegram.me/boroujerdilib |رده ویکی‌انبار: [[Commons:Category:Files from the Grand Ayatollah Boroujerdi Library]]}} || |- |کتابخانه تخصصی تاریخ اسلام و ایران ||{{bulleted list |وبسایت: https://historylib.com/ |کانال تلگرام: https://telegram.me/Historylibrary |رده ویکی‌انبار: [[Commons:Category:Files from The Specialized Library on Islam and Iran]]}} || |- |کتابخانه و موزه ||کانال تلگرام: https://telegram.me/litera999 || |- |کتاب‌پدیا ||{{bulleted list |وبسایت: https://ketabpedia.com |در بایگانی اینترنت: https://archive.org/details/ketabpedia}} || |- |داکیباکس ||وبسایت: https://docibox.ir/ || |- |کتابخانه دیجیتال هند||{{bulleted list |وبسایت: http://www.new.dli.ernet.in/ |در بایگانی اینترنت: https://archive.org/details/digitallibraryindia |رده ویکی‌انبار: [[Commons:Category:Digital Library of India]] و [[Commons:Category:Bharat Ek Khoj]]}} || |- |کتابخانه کنگره ||{{bulleted list |وبسایت: https://www.loc.gov/search/?fa=language:persian |رده ویکی‌انبار: [[Commons:Category:Library of Congress]]}} || |- |دیوار مهربانی نسخ خطی ||کانال تلگرام: https://telegram.me/nosakhekhati || |- | کتابکده علوم سیاسی ||کانال تلگرام: https://telegram.me/PoliticalLibrary || |- | کتابخانهٔ ادب و فرهنگ ||کانال تلگرام: https://telegram.me/divaanha || |- | آرشیو نشریات ایران ||{{bulleted list |وبسایت: https://nashrieh.com/ |کانال تلگرام: https://telegram.me/nashrieh7}}|| |} ==همچنین ببینید== * [https://digitalorientalist.com/2023/02/10/digital-resources-for-the-study-of-persian-manuscripts/ Digital Resources for the Study of Persian Manuscripts] ld12m6wfir8p4w6ie89rjmyneq4p9e0 بحث کاربر:Hanooz 3 39182 305257 305252 2026-10-19T14:11:07Z Hanooz 17889 /* تاریخ در الگوی header */ پاسخ 305257 wikitext text/x-wiki == روش استاندارد برای همکاری == کاربر گرامی؛ احتراماً به آگاهی می‌رساند چندی است که در ویکی‌نبشته کار به شیوهٔ سنتی را متوقف کرده‌ایم. با این حال ما از هر گونه مشارکت خوب شما استقبال می‌کنیم اما اگر تمایل به همکاری مؤثرتر دارید، خواهشمندم روش استاندارد را پی بگیرید. در این روش یک کتاب به عنوان منبع انتخاب شده و برگه‌های آن پیاده‌سازی می‌شوند. سپس دیگر کاربران به نمونه‌خوانی آن برگه‌ها می‌پردازند. در پایان با بکارگیری چند دستور کوتاه تمام برگه‌های یک فصل (یا یک غزل، قصیده یا غیره) را در یک صفحه گردآوردی می‌کنیم. با تکیه به این شیوه خوانندگان می‌توانند با یک کلیک از صحت مطالب و تطابق با متن اصلی آگاهی پیدا کنند. با مراجعه به صفحهٔ [[راهنما:راهنمای کوتاه|راهنما]] می‌توانید مطالب مفیدی در این خصوص پیدا کنید. ارادتمند--[[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۰۶:۴۸ (UTC) : {{پینگ|Yoosef Pooranvary}} ممنون. یک سوال از شما دارم. خیلی وضعیت نامه‌ها و دست‌نوشته ها چطور است؟ می‌شود در ویکی‌نبشته گذاشت‌شان؟ مثلاْ من نامه‌ی فروغ را در [[کاربر:Hanooz/صفحه تمرین]] قرار دادم، خود تصویر نامه را هم می‌توانم در انبار بارگذاری کنم این‌ها را می‌شود در ویکی‌نبشته منتشر کرد؟ یا نامه‌های مرتضی کیوان را. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۱۰:۱۳ (UTC) :مهم است که بدانیم تصویر نامه را از کجا آورده‌اید. یعنی منبع آن چیست و اینکه گردآورنده‌ی آن منبع (در صورتی که در یک کتاب چاپ شده باشد) هم پیش از ۱۳۵۸ مرده باشد. --[[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۱۰:۲۲ (UTC) ::نامه‌ها در کتاب‌های مختلفی چاپ شده‌اند. نامه‌های فروغ که در کتاب فرزانه میلانی است و نامه‌های کیوان در «کتاب مرتضی کیوان» و طبق قوانین ویکی‌انبار ([https://commons.wikimedia.org/wiki/Template:PD-scan این الگو را ببینید]) اسکن یا عکس‌برداری از متنی که کپی‌رایت نداشته باشد مجاز است. هر دوی این‌ها پیش از انقلاب مرده‌اند و آثارشان در مالکیت عمومی است. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۱۰:۲۷ (UTC) ::یک نمونه از نامه‌ها: [[:File:Nameh keyvan 1.jpg]]. {{رچ}} [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۱۰:۳۰ (UTC) :::عکسی که به عنوان نمونه گذاشته‌اید هیچ نشانی در خود ندارد که بتوان آن را به صاحبش منتسب کرد. اگر اصل کتاب وجود داشت، کار خیلی بهتر می‌شد. اما اگر در ویکی‌پدیا قبول کرده‌اند که این متن مربوط به شخص مورد ادعا است و در مالکیت عمومی قرار دارد، اینجا هم آن را قبول می‌کنیم. اما به هر حال هیچ پژوهشگری به این نوع آثار اعتماد نمی‌کند. --[[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۱۱:۱۶ (UTC) ::::متاسفانه خود کتاب را ندارم اما نسخه‌ی پی‌دی‌اف کتاب در اینترنت هست. در کتابناک اگر «کتاب مرتضی کیوان» را بجویید قبل از صفحه‌ی آخر کتاب این نامه چاپ شده. نامه‌ی فروغ این‌جاست: [http://khabgard.com/1519/%D9%86%D8%A7%D9%85%D9%87-%D9%85%D9%86%D8%AA%D8%B4%D8%B1%D9%86%D8%B4%D8%AF%D9%87-%D9%81%D8%B1%D9%88%D8%BA-%D9%81%D8%B1%D8%AE%D8%B2%D8%A7%D8%AF/ خوابگرد]. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ‏۱۹ ژوئیهٔ ۲۰۱۸، ساعت ۱۱:۲۱ (UTC) == ورودی کاربران == سلام و عرض تشکر بابت زحمتی که می‌کشید. ای کاش آثاری را که اضافه می‌کنید در ورودی کاربران هم بگذارید. اینطوری دستکم ماها که کاربر دائمی هستیم از تازه‌ها باخبر می‌شویم. [[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ۲ ژوئن ۲۰۲۵، ساعت ۱۹:۵۰ (UTC) : سلام. ممنون از لطف و راهنمایی شما. در نظرم هست یک دسته‌بندی موضوعی در ورودی انجام بدهم و تا جای ممکن تمام آثار آزاد انبار را هم آنجا فهرست کنم. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۲ ژوئن ۲۰۲۵، ساعت ۱۹:۵۶ (UTC) == این نشان برای شما! == {| style="background-color: #fdffe7; border: 1px solid #fceb92;" |rowspan="2" style="vertical-align: middle; padding: 5px;" | [[پرونده:Tireless Contributor Barnstar Hires.gif|100px]] |style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" | '''نشان مشارکت‌کننده خستگی‌ناپذیر''' |- |style="vertical-align: middle; padding: 3px;" | به پاس فعالیت‌های خوبتان در ویکی‌نبشتهٔ فارسی. [[کاربر:Darafsh|<span style="color:Purple; text-shadow:grey 0.1em 0.2em 0.1em;">درفش کاویانی</span>]] ([[بحث کاربر:Darafsh|<span title="پیام بگذارید!" style="cursor: crosshair;">بحث</span>]]) ۲۱ ژوئن ۲۰۲۶، ساعت ۱۰:۱۲ (UTC) |} :خیلی ممنونم از لطف شما. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۲۱ ژوئن ۲۰۲۶، ساعت ۱۵:۲۸ (UTC) == کتاب مقدس == سلام. واقعا خسته نباشید. این که برای جداسازی آیات، Asterisks گذاشتید دلیلی دارد؟ چون من فکر می‌کنم در اصل کتاب از ستاره داوود استفاده شده. [[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ۲۴ ژوئن ۲۰۲۶، ساعت ۱۷:۴۲ (UTC) :سلام. خیلی ممنونم. متاسفانه کیفیت اسکن نسخه‌ها آنچنان بالا نیست. بعد از مقایسه با [[:File:کتاب مقدس یعنی کتب عهد عتیق و عهد جدید - بریتش و فورن بیبل سوسائیتی لندن - 1932.pdf|نسخه دیگر]] به نظرم رسید انحنای کاراکتر بیشتر به چیزی مثل ☼ شبیه باشد. نمی‌دانم ستاره داوود در این نقش آیا در جای دیگری برای کتاب مقدس استفاده شده یا نه. در نظرم بود برای ادامه کار نظر شما را جویا شوم. الان قاعدتاً همان ستاره داوود را باید در نسخه نهایی به کار ببریم. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۲۴ ژوئن ۲۰۲۶، ساعت ۱۸:۱۳ (UTC) === اصلاح ترجمه‌های ویکی‌پدیا === یکی از فواید نمونه‌خوانی کتاب مقدس در اینجا، رسیدگی به شاهکارهای ترجمه‌ای است که بعضی کاربران با اعتماد به نفس‌های چسبیده به سقف (!) در ویکی‌پدیا کرده‌اند. برای من که مفرح است! --[[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ۲۵ ژوئن ۲۰۲۶، ساعت ۰۸:۰۴ (UTC) :اوه :) امیدوارم یک نسخه تمیز در ویکی‌نبشته دست کم به مدل‌هاش هوش مصنوعی کمک کند در آینده پیشنهادهای دقیق‌تری بدهند. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۲۵ ژوئن ۲۰۲۶، ساعت ۰۸:۵۰ (UTC) == الگوها == سلام. وقتی الگویی را اینجا آورده‌ایم و با اسم فارسی دارد کار می‌کند، چرا دوباره یک نمونه لاتین از آن می‌سازید؟ [[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ۷ ژوئیهٔ ۲۰۲۶، ساعت ۱۷:۱۰ (UTC) :سلام. کدام الگو؟ [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۷ ژوئیهٔ ۲۰۲۶، ساعت ۱۷:۲۳ (UTC) ::مثلا {{الگو|سرصفحه‌مستمر}} یا همان {{الگو|سصم}}. یا اخیرا دیدم {{الگو|سرصفحه}} را هم به انگلیسی تغییر داده بودید. [[کاربر:Yoosef Pooranvary|یوسف]] ([[بحث کاربر:Yoosef Pooranvary|بحث]]) ۷ ژوئیهٔ ۲۰۲۶، ساعت ۱۸:۳۶ (UTC) :::RunningHeader که الگوی تازه نیست. صرفاً تغییرمسیر به الگوی قبلی‌ست. احتمالاً تنها استثنای پیام شما سرصفحه و پدیدآورنده باشد که دلیل تغییر به‌روز بودن، امکانات بیشتر و بهتر کار کردن با اسکریپت‌های ویکی‌نبشته انگلیسی است. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۸ ژوئیهٔ ۲۰۲۶، ساعت ۱۲:۱۰ (UTC) == بازسازی اسکن «هشت کتاب» == سلام و خسته نباشید. اسکن «هشت کتاب» (چاپ دوم طهوری) را که شما در ویکی‌انبار بارگذاری کرده‌اید، از روی تصویرهای اصلی بازسازی کرده‌ام. تصویر هر صفحه به جای ۱۲۰۰×۱۸۰۰ اکنون ۲۰۰۰×۳۰۰۰ است، زمینه سفید و حروف تیره و خواناتر شده، و پس‌زدگی نوشتهٔ پشت صفحه تا حد زیادی برطرف شده است. حجم پرونده هم از ۹۰۴ مگابایت به ۹۰ مگابایت رسیده. شمار و ترتیب صفحه‌ها همان ۴۷۲ صفحهٔ پیشین است و هیچ جابه‌جایی در هیچ صفحه‌ای رخ نداده و این موضوع را چندین بار چک کرده‌ام. هیچ‌کدام از برگه‌های نمونه‌خوانی‌شده آسیبی نمی‌بیند. صفحهٔ ۶۵ را هم که خودتان جداگانه جایگزین کرده بودید نگه داشته‌ام، چون تصویر آن صفحه در آرشیو اینترنتی خراب است. جلد رو و پشت رنگی می‌ماند، ولی صفحه‌های متن سیاه‌وسفید می‌شوند و در نتیجه رنگ برچسب‌های کتابخانه از بین می‌رود. برای بارگذاری روی همان پرونده، پالایهٔ ۲۹۰ ویکی‌انبار جلوی مرا می‌گیرد. اگر موافقید، لطفاً <code><nowiki>{{Allow overwriting}}</nowiki></code> را به صفحهٔ پرونده بیفزایید تا بتوانم آن را بارگزاری کنم. نسخهٔ کنونی هم در تاریخچه می‌ماند و اگر نتیجه را نپسندید، می‌توانید به سادگی آن را برگردانید. من همین کار را پیش از این هم برای [https://commons.wikimedia.org/wiki/File:حافظ_قزوینی_غنی.pdf دیوان حافظ قزوینی غنی] انجام داده بودم که می‌توانید کار من را آنجا ببینید. با احترام و سپاس فراوان [[کاربر:Mamouri|Mamouri]] ([[بحث کاربر:Mamouri|بحث]]) ۴ اکتبر ۲۰۲۶، ساعت ۰۹:۰۳ (UTC) :سلام. خیلی ممنونم. الگو را اضافه کردم. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۴ اکتبر ۲۰۲۶، ساعت ۱۳:۵۸ (UTC) :Hanooz گرامی؛ سلام و امیدوارم حالتان خوب باشد. من همین کار را با کتاب [[:پرونده:دیوان خانم پروین اعتصامی.pdf]] انجام دادم. چون در حال حاضر در حال به‌روز کردن مقالات پروین اعتصامی هستم و مقالهٔ [https://fa.wikipedia.org/wiki/دیوان_پروین_اعتصامی دیوان پروین اعتصامی] و [https://fa.wikipedia.org/wiki/زن_و_تاریخ زن و تاریخ] را درست کردم و مقالهٔ [https://fa.wikipedia.org/wiki/نهال_آرزو نهال آرزو] را هم ویرایش کردم. لطف می‌کنید این الگو را برای آن فایل هم بگذارید که بتوانم نسخهٔ بهبودیافته را بفرستم؟ با احترام و سپاس فراوان [[کاربر:Mamouri|Mamouri]] ([[بحث کاربر:Mamouri|بحث]]) ۱۳ اکتبر ۲۰۲۶، ساعت ۱۷:۰۹ (UTC) ::'''پی‌نوشت:''' به لطف پیامی که شما در ویکی‌انبار نوشتید بالاخره به من دسترسی دادند که بتوانم فایل را بارگزاری کنم. صفحات کاملاً مطابق با نسخهٔ شما مانده است، ولی کیفیت تصویر افزایش یافته و زردی کاغذها زدوده شده‌اند. افزون بر این، نسخهٔ جدید داری [https://fa.wikipedia.org/wiki/نویسه‌خوان_نوری نویسه‌خوان نوری] و قابل جستجو است. اگر شما این فایل را بارگزاری نکرده بودید برای من راهی وجود نداشت که به آن دسترسی پیدا کنم و بتوانم اصلاحش کنم. از این رو از شما بسیار سپاسگزارم. با احترام [[کاربر:Mamouri|Mamouri]] ([[بحث کاربر:Mamouri|بحث]]) ۱۴ اکتبر ۲۰۲۶، ساعت ۰۷:۲۶ (UTC) :::خواهش می‌کنم. ممنون از شما بابت زمانی که صرف پروژه‌های ویکی‌مدیا می‌کنید. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۱۴ اکتبر ۲۰۲۶، ساعت ۱۷:۲۲ (UTC) == تاریخ در الگوی header == سلام و وقت بخیر. در صفحه‌ی [[رساله موسومه به یک کلمه]] تاریخ اثر را که در الگو وارد شده، ۱۳۲۵ خورشیدی نمایش میدهد که اشتباه است و باید قمری باشد. رده‌ای که به صفحه اضافه می‌کند هم درست نیست. قبلاً برای جلوگیری از این مشکل در الگوی {{الگو|سرصفحه}} سال‌های خورشیدی، قمری و میلادی را بر حسب نیاز جدا وارد میکردیم. آیا ممکن است در الگوی {{الگو|header}} هم نوع تقویم را مشخص کرد؟ مشابه این موضوع در الگوی {{الگو|پدیدآورنده}} هم هست که فقط تاریخ میلادی را نمایش می‌دهد. <span style="font-family:times; text-shadow: 0 0 .11em #6af; font-size:12pt">[[User:Arash.z|Arash.z]] <small>([[User talk:Arash.z|بحث]])</small></span> دوشنبه،۲۷ مهر ۱۴۰۵، ساعت ۱۰:۰۹ (ایران) ۱۹ اکتبر ۲۰۲۶، ساعت ۰۶:۳۹ (UTC) :سلام. اصلاح شد. الگوی header پارامتری با عنوان calendar دارد که سه مقدار میلادی، خورشیدی و قمری را می‌پذیرد و پیش‌فرضش خورشیدی است. در author هم به همین شکل تنظیم شده. در الگوهای فارسی کنونی فکر نمی‌کنم چنین امکانی باشد. این دو نسخه تغییریافته از ویکی‌نبشته انگلیسی هستند. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۱۹ اکتبر ۲۰۲۶، ساعت ۱۴:۱۱ (UTC) i7dcvou42li6opg566i8tyem8zhkpi1 برگه:The Blind Owl.pdf/۷۳ 104 46714 305291 124584 2026-10-20T03:38:04Z Charan Gill 6444 /* هم‌سنجی‌شده */ 305291 proofread-page text/x-wiki <noinclude><pagequality level="4" user="Charan Gill" />{{سصم|۷۳||}}</noinclude>بود و او را در تحت اختیار من گذاشته بود از من بدش میامد، شاید میخواست آزاد باشد.– بالاخره یکشب تصمیم گرفتم که بزور پهلویش بروم– تصمیم خودم را عملی کردم، اما بعد از کشمکش سخت او بلند شد رفت و من فقط خودم را راضی کردم انشب در رختخوابش که حرارت تن او به جسم آن فرو رفته بود و بوی او را میداد بخوابم و غلت بزنم– تنها خواب راحتی که کردم همان شب بود– از آنشب ببعد اطاقش را از اطاق من جدا کرد. شبها وقتیکه وارد خانه میشدم، او هنوز نیامده بود، نمیدانستم که آمده است یا نه– اصلاً نمیخواستم که بدانم– چون من محکوم به تنهائی، محکوم بمرگ بوده‌ام– خواستم بهر وسیله‌ای شده با فاسق‌های او رابطه پیدا بکنم– این را دیگر کسی باور نخواهد کرد– از هرکسیکه شنیده بودم خوشش میامد، کشیک میکشیدم، می‌رفتم هزار جور خفت و مذلت بخودم هموار میکردم با آنشخص آشنا میشدم، تملقش را میگفتم و او را برایش قر میزدم میاوردم– آنهم چه فاسق‌هائی: سیرابی فروش، فقیه، جگرکی، رئیس داروغه، مقنی، سوداگر، فیلسوف که اسمها و القابشان فرق میکرد ولی همه شاگرد کله‌پز بودند، همه آنها را بمن ترجیح میداد– با چه خفت و<noinclude></noinclude> eu5oy96atcysq5p9miuxf4qmlidtqw8 برگه:The Blind Owl.pdf/۷۴ 104 46715 305292 166967 2026-10-20T11:14:17Z Charan Gill 6444 /* هم‌سنجی‌شده */ 305292 proofread-page text/x-wiki <noinclude><pagequality level="4" user="Charan Gill" />{{سصم|۷۴||}}</noinclude>خواری خودم را کوچک و ذلیل میکردم کسی باور نخواهد کرد، چون میترسیدم زنم از دستم در برود، میخواستم طرز رفتار، اخلاق و دلربائی را از فاسقهای زنم یاد بگیرم ولی جاکش بدبختی بودم که همه احمقها بریشم میخندیدند– من اصلاً چطور میتوانستم رفتار و اخلاق رجاله‌ها را یاد بگیرم؟ حالا میدانم آنها را دوست داشت چون بی حیا، احمق و متعفن بودند، عشق او اصلاً با کثافت و مرگ توام بود– ایا حقیقتاً من مایل بودم با او بخوابم، ایا صورت ظاهر او مرا شیفته خودش کرده بود یا تنفر او از من یا حرکات و اطوارش بود و یا علاقه و عشقی که از بچگی بمادرش داشتم و یا همه اینها دست بیکی کرده بودند؟ نه، نمیدانم، تنها یک چیز را میدانم: این زن، این لکاته، این جادو نمیدانم چه زهری در روح من، در هستی من ریخته بود که نه تنها او را میخواستم، بلکه تمام ذرات تنم، ذرات تن او را لازم داشت، فریاد میکشید که لازم دارد و آرزوی شدیدی میکردم که با او در جزیره گمشده‌ای باشم که آدمیزاد در آنجا وجود نداشته باشد، آرزو میکردم که یک زمین لرزه یا طوفان و یا صاعقه آسمانی همه این رجاله‌ها که پشت دیوار اطاقم نفس میکشیدند، دوندگی میکردند، کیف میکردند همه را میترکانید<noinclude></noinclude> 47e9eebdnw8chx3pmv8emqg7r8dvo2r الگو:اسکنک 10 60384 305260 188487 2026-10-19T14:28:44Z EmausBot 7866 در حال اصلاح تغییرمسیر دوتایی از [[الگو:اسکن کوچک]] به [[الگو:پیوند اسکن کوچک]] 305260 wikitext text/x-wiki #تغییر_مسیر [[الگو:پیوند اسکن کوچک]] 74s7lbsnxbetj8pw0pizh2cuoouqt02 الگو:Small scan link 10 83522 305259 277541 2026-10-19T14:28:33Z EmausBot 7866 در حال اصلاح تغییرمسیر دوتایی از [[الگو:اسکن کوچک]] به [[الگو:پیوند اسکن کوچک]] 305259 wikitext text/x-wiki #تغییر_مسیر [[الگو:پیوند اسکن کوچک]] 74s7lbsnxbetj8pw0pizh2cuoouqt02 رساله موسومه به یک کلمه 0 84002 305256 285190 2026-10-19T14:01:33Z Hanooz 17889 | calendar = قمری 305256 wikitext text/x-wiki {{header | title = رساله موسومه به یک کلمه | author = یوسف مستشارالدوله | translator = | section = | previous = | next = | year = ۱۳۲۵ | calendar = قمری | notes = | cover = رساله موسومه به یک کلمه - میرزا یوسف خان مستشارالدوله - مطبعه مبارکه شاهنشاهی.pdf/۱ }} <pages index="رساله موسومه به یک کلمه - میرزا یوسف خان مستشارالدوله - مطبعه مبارکه شاهنشاهی.pdf" include=5></pages> {{page break|label=}} <pages index="رساله موسومه به یک کلمه - میرزا یوسف خان مستشارالدوله - مطبعه مبارکه شاهنشاهی.pdf" from=6 to=76></pages> {{مالکیت عمومی در ایران}} {{authority control}} [[رده:قوانین فرانسه]] [[رده:اسلام]] 6ugrjj4zp5k50xgteqyokm4mgmx58nc الگو:بند/styles.css 10 87446 305285 286021 2026-10-19T22:09:16Z Hanooz 17889 Hanooz صفحهٔ [[الگو:Verse/styles.css]] را بدون برجای‌گذاشتن تغییرمسیر به [[الگو:بند/styles.css]] منتقل کرد 286021 sanitized-css text/css .wst-verse { color:#2E8B57; } .wst-verse-left { position:absolute; left:1em; } .wst-verse-float { float:left; text-align:right; margin-left:-4em; width:4em; } @media screen { html.skin-theme-clientpref-night .wst-verse { color: #97efbe; } } @media screen and (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .wst-verse { color: #97efbe; } } 0ysn3e16ca8tfsxp1n03by2qdvvgkdu الگو:Verse 10 87447 305286 286022 2026-10-19T22:09:52Z Hanooz 17889 تغییرمسیر به [[الگو:بند]] 305286 wikitext text/x-wiki #تغییر_مسیر [[الگو:بند]] m16ou5xe24pk72wxoatw20br5s30ztj پودمان:Makeid 828 87862 305290 286531 2026-10-19T22:21:17Z Hanooz 17889 305290 Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs function p._makeid(args) local id_text = args[1] if not id_text or id_text == '' or id_text=='radical' then return '' end local blank_values = {} for k, v in pairs(args) do if string.match(k, '^blank%d*$') then blank_values[v] = true end end if blank_values[id_text] then return '' else return 'id=\"' .. mw.uri.anchorEncode(id_text) .. '\"' end end function p.makeid(frame) return p._makeid(getArgs(frame)) end return p r6v2s1athobl4qrxknqddwtt11il76b ویکی‌نبشته:نگهداری/الگو 4 96185 305287 301908 2026-10-19T22:17:21Z Hanooz 17889 /* عنوان غیرفارسی */ 305287 wikitext text/x-wiki == استفاده نشده == * https://quarry.wmcloud.org/query/109743 {| class="wikitable" !template |- |[[الگو:!-]] |- |[[الگو:!]] |- |[[الگو:....]] |- |[[الگو:=]] |- |[[الگو:Aligned couplet]] |- |[[الگو:Annotate QID]] |- |[[الگو:Anon]] |- |[[الگو:Aqua]] |- |[[الگو:Author subpage]] |- |[[الگو:Authority reference]] |- |[[الگو:BLP editintro]] |- |[[الگو:Bar]] |- |[[الگو:Biblecontents]] |- |[[الگو:Bigmath]] |- |[[الگو:Black]] |- |[[الگو:Blank]] |- |[[الگو:Box-header]] |- |[[الگو:CTOC-content-nl]] |- |[[الگو:CTOC-content]] |- |[[الگو:CTOC-title-nl]] |- |[[الگو:CTOC-title]] |- |[[الگو:CategoryTOC]] |- |[[الگو:Center or HI]] |- |[[الگو:Cited]] |- |[[الگو:Col-begin]] |- |[[الگو:Col-break]] |- |[[الگو:Col-end]] |- |[[الگو:Commons category link]] |- |[[الگو:Ct]] |- |[[الگو:Custom rule segment]] |- |[[الگو:DIRMARK]] |- |[[الگو:Darkred]] |- |[[الگو:Dashed line]] |- |[[الگو:Db-meta]] |- |[[الگو:Diff]] |- |[[الگو:Ditto bar thin]] |- |[[الگو:Ditto bar]] |- |[[الگو:Div col end]] |- |[[الگو:Dotted TOC page listing]] |- |[[الگو:Edit]] |- |[[الگو:Editprotected]] |- |[[الگو:End]] |- |[[الگو:Featured]] |- |[[الگو:File other]] |- |[[الگو:Fine block]] |- |[[الگو:FlowMention]] |- |[[الگو:Font-size90%]] |- |[[الگو:Fuchsia]] |- |[[الگو:Gray]] |- |[[الگو:Greyed]] |- |[[الگو:Header periodical]] |- |[[الگو:Historical]] |- |[[الگو:Hlist]] |- |[[الگو:IRC]] |- |[[الگو:ISO 639 name]] |- |[[الگو:IfEmptyDo]] |- |[[الگو:Index progress pie chart]] |- |[[الگو:Indigo]] |- |[[الگو:Inline-block]] |- |[[الگو:Internet Archive small link]] |- |[[الگو:Invisible reference]] |- |[[الگو:Is century]] |- |[[الگو:Is decade]] |- |[[الگو:Is number]] |- |[[الگو:Is year]] |- |[[الگو:Issue banner]] |- |[[الگو:Italic]] |- |[[الگو:Kbd]] |- |[[الگو:LQT Moved thread stub converted to Flow]] |- |[[الگو:LQT post imported with different signature user]] |- |[[الگو:LQT post imported with supressed user]] |- |[[الگو:Lang block]] |- |[[الگو:Lang]] |- |[[الگو:Larger block]] |- |[[الگو:Lime]] |- |[[الگو:Line break]] |- |[[الگو:Locus sigilli]] |- |[[الگو:Longdash]] |- |[[الگو:Loop]] |- |[[الگو:Ltr ends]] |- |[[الگو:Ltr]] |- |[[الگو:Manuscript Joiner end]] |- |[[الگو:Manuscript Joiner start]] |- |[[الگو:Manuscript Substitution]] |- |[[الگو:Maroon]] |- |[[الگو:Media]] |- |[[الگو:Migrate to djvu]] |- |[[الگو:Monthly Challenge month overview]] |- |[[الگو:Na]] |- |[[الگو:Namespace link]] |- |[[الگو:National]] |- |[[الگو:Navy]] |- |[[الگو:Notelist]] |- |[[الگو:Nr]] |- |[[الگو:Numbers]] |- |[[الگو:Olive]] |- |[[الگو:Orange]] |- |[[الگو:Other translations]] |- |[[الگو:Otrs]] |- |[[الگو:PD-1996]] |- |[[الگو:PD-old-30-1923]] |- |[[الگو:PD-old-50-1923]] |- |[[الگو:PD-old-60-1923]] |- |[[الگو:PD-old-70-1923]] |- |[[الگو:PD-old-75-1923]] |- |[[الگو:PD-old-80-1923]] |- |[[الگو:PD-old-99-1923]] |- |[[الگو:Page end hyphen]] |- |[[الگو:Page]] |- |[[الگو:Personendaten]] |- |[[الگو:Pmbox]] |- |[[الگو:Poem begin]] |- |[[الگو:Poem end]] |- |[[الگو:Poem-off]] |- |[[الگو:Poem-on]] |- |[[الگو:Pp-move]] |- |[[الگو:Pp-semi-template]] |- |[[الگو:Process subpage]] |- |[[الگو:Progress pie chart]] |- |[[الگو:Progress]] |- |[[الگو:Purple]] |- |[[الگو:RebeccaPurple]] |- |[[الگو:Redact]] |- |[[الگو:Reflist-talk]] |- |[[الگو:Section end rule]] |- |[[الگو:Sibling]] |- |[[الگو:Side box]] |- |[[الگو:Silver]] |- |[[الگو:Subst]] |- |[[الگو:Symbol missing]] |- |[[الگو:TOC line]] |- |[[الگو:TOC link]] |- |[[الگو:TOC row 1-dot-1]] |- |[[الگو:TOC row 2-1]] |- |[[الگو:TOC row c]] |- |[[الگو:TOC row l]] |- |[[الگو:TOC row r]] |- |[[الگو:TOC]] |- |[[الگو:Tag link nostyle]] |- |[[الگو:Teal]] |- |[[الگو:Text-indent]] |- |[[الگو:Toolbar]] |- |[[الگو:Translation header]] |- |[[الگو:Transparent]] |- |[[الگو:Txt]] |- |[[الگو:Uhtml]] |- |[[الگو:Unicode]] |- |[[الگو:Unspaced page end]] |- |[[الگو:User eo-3]] |- |[[الگو:User es-2]] |- |[[الگو:User fa-4]] |- |[[الگو:User is-1]] |- |[[الگو:User ro-2]] |- |[[الگو:User ru-1]] |- |[[الگو:User yi-1]] |- |[[الگو:Userbox-level]] |- |[[الگو:What era is]] |- |[[الگو:White]] |- |[[الگو:Wikidata image]] |- |[[الگو:Wikidata]] |- |[[الگو:Wikivar]] |- |[[الگو:Word-spacing]] |- |[[الگو:X-smaller block]] |- |[[الگو:Xx-larger block]] |- |[[الگو:Xx-smaller block]] |- |[[الگو:Xxxx-larger block]] |- |[[الگو:Ya]] |- |[[الگو:Yellow]] |- |[[الگو:آغاز فهرست آثار]] |- |[[الگو:اثر]] |- |[[الگو:اخطار نگاره]] |- |[[الگو:انتقال به ویکی‌نسک]] |- |[[الگو:باز شد]] |- |[[الگو:باز شدن]] |- |[[الگو:باز نشد]] |- |[[الگو:بازبحث]] |- |[[الگو:بالای بایگانی]] |- |[[الگو:بایگانی برای صفحهٔ موضوعات روانی تبدیل شده]] |- |[[الگو:بایگانی برای ویکی‌متن صفحهٔ بحث تبدیل شده]] |- |[[الگو:بر]] |- |[[الگو:برش تصویر]] |- |[[الگو:برون‌بری]] |- |[[الگو:بسملة]] |- |[[الگو:بن]] |- |[[الگو:به انگلیسی]] |- |[[الگو:به فرانسوی]] |- |[[الگو:به گفتاورد منتقل شود]] |- |[[الگو:بیت خالی]] |- |[[الگو:بیهقی-د]] |- |[[الگو:بیهقی-ن]] |- |[[الگو:تاریخ الطبری ط بریل]] |- |[[الگو:تاریخ تولد]] |- |[[الگو:تاریخ طبری]] |- |[[الگو:تاریخ مرگ و سن]] |- |[[الگو:ترتیب‌پیش‌فرض]] |- |[[الگو:تست3 تست3]] |- |[[الگو:تصویر خام]] |- |[[الگو:تمرین]] |- |[[الگو:جعبه اطلاعات زندگی‌نامه]] |- |[[الگو:جعبه زندگینامه]] |- |[[الگو:جعبه]] |- |[[الگو:حاشیه چپ]] |- |[[الگو:حق تکثیر تصویر نامعلوم]] |- |[[الگو:خط نقطه‌چین فهرست]] |- |[[الگو:خطا]] |- |[[الگو:درگاه مادر]] |- |[[الگو:دست نگهدار]] |- |[[الگو:رسته‌های بنیادی]] |- |[[الگو:زرین‌کوب]] |- |[[الگو:سرصفحه داستان]] |- |[[الگو:سن]] |- |[[الگو:سنگنبشته گنجنامه]] |- |[[الگو:سنگ‌نبشته‌های هخامنشی]] |- |[[الگو:سه دایره بهار]] |- |[[الگو:شرح]] |- |[[الگو:شک]] |- |[[الگو:شکست واژه-آغاز]] |- |[[الگو:شکست واژه-پایان]] |- |[[الگو:صفحهٔ موضوعات روان به جریان تبدیل شد]] |- |[[الگو:صل]] |- |[[الگو:صلى الله عليه وآله وسلم]] |- |[[الگو:صلى الله عليه وآله]] |- |[[الگو:عدد به فارسی]] |- |[[الگو:عليه السلام]] |- |[[الگو:عليه الصلاة والسلام]] |- |[[الگو:عليهم السلام]] |- |[[الگو:غ]] |- |[[الگو:غلق]] |- |[[الگو:فرهنگستان-ب]] |- |[[الگو:فرهنگستان-ج]] |- |[[الگو:فرهنگستان-ح]] |- |[[الگو:فهرست مرکزی]] |- |[[الگو:مؤلف۲]] |- |[[الگو:مؤلف۳]] |- |[[الگو:مجلس شورای اسلامی]] |- |[[الگو:مجوز گنو-خود]] |- |[[الگو:مجوز گنو]] |- |[[الگو:مدیر ویکی‌پدیا]] |- |[[الگو:مرورگر]] |- |[[الگو:ممتنع]] |- |[[الگو:منصفانه]] |- |[[الگو:نشان مدیر]] |- |[[الگو:نظر]] |- |[[الگو:نمونه‌خوانی شده]] |- |[[الگو:نوشتار برگزیده]] |- |[[الگو:نگاره قدیمی]] |- |[[الگو:نیازمند انگلیسی]] |- |[[الگو:نیازمند ترجمه]] |- |[[الگو:نیازمند تصویر]] |- |[[الگو:نیازمند جدول اعداد سیاقی]] |- |[[الگو:نیازمند فرمول ریاضی]] |- |[[الگو:نیازمند نت موسیقی]] |- |[[الگو:هم‌سنجی شده]] |- |[[الگو:هم‌سنجی‌شده]] |- |[[الگو:وحشی-س]] |- |[[الگو:وسط کوچکتر۲]] |- |[[الگو:وک۲]] |- |[[الگو:ویرایش]] |- |[[الگو:ویکی سازی]] |- |[[الگو:ویکی‌متن صفحهٔ بحث تبدیل شده به جریان]] |- |[[الگو:ویکی‌نبشته]] |- |[[الگو:ویکی‌نسک]] |- |[[الگو:پایان فهرست آثار]] |- |[[الگو:پایین بایگانی]] |- |[[الگو:پروژه خواهر]] |- |[[الگو:پروژه‌های بزرگ]] |- |[[الگو:کاربر ویکی‌نسک]] |- |[[الگو:کلیدکلیکشونده ۲]] |- |[[الگو:کمکم کن]] |- |[[الگو:کپی‌رایت توسط ویکی‌مدیا]] |- |[[الگو:یادداشت کنار]] |- |[[الگو:یادکرد ژورنال]] |- |[[الگو:یونی‌کد]] |} == حداقل یک میان‌ویکی، بدون پیوند به نسخه انگلیسی ویکی‌نبشته == * https://quarry.wmcloud.org/query/109699 {| class="wikitable" !template!!qid |- |[[الگو:!]]||[[d:Q5400303]] |- |[[الگو:-]]||[[d:Q5007897]] |- |[[الگو:=]]||[[d:Q5406510]] |- |[[الگو:About-distinguish2]]||[[d:Q6667051]] |- |[[الگو:Asbox/stubtree/2]]||[[d:Q14406547]] |- |[[الگو:Asbox/stubtree/3]]||[[d:Q6688013]] |- |[[الگو:Asbox/stubtree]]||[[d:Q14450995]] |- |[[الگو:BLP editintro]]||[[d:Q6864743]] |- |[[الگو:Babel]]||[[d:Q5461620]] |- |[[الگو:Bigmath]]||[[d:Q6718312]] |- |[[الگو:Custom rule segment]]||[[d:Q15649071]] |- |[[الگو:FlowMention]]||[[d:Q20739451]] |- |[[الگو:HideIfEmpty]]||[[d:Q18340418]] |- |[[الگو:IfEmptyDo]]||[[d:Q18340419]] |- |[[الگو:Interwiki-info]]||[[d:Q15632997]] |- |[[الگو:Interwikitmp-grp]]||[[d:Q6027648]] |- |[[الگو:Key press/core]]||[[d:Q14334259]] |- |[[الگو:Key press]]||[[d:Q5410128]] |- |[[الگو:LQT Moved thread stub converted to Flow]]||[[d:Q21042800]] |- |[[الگو:LQT post imported with different signature user]]||[[d:Q21042795]] |- |[[الگو:LQT post imported with supressed user]]||[[d:Q21042797]] |- |[[الگو:Lang2dir]]||[[d:Q141593358]] |- |[[الگو:LangSwitch]]||[[d:Q15212145]] |- |[[الگو:MONTHNAMEEN]]||[[d:Q23687361]] |- |[[الگو:Main list]]||[[d:Q6019536]] |- |[[الگو:Na]]||[[d:Q10998989]] |- |[[الگو:Nobots]]||[[d:Q13225996]] |- |[[الگو:Other people5]]||[[d:Q20750675]] |- |[[الگو:Other places3]]||[[d:Q13099250]] |- |[[الگو:Other ships]]||[[d:Q13108237]] |- |[[الگو:Other uses of]]||[[d:Q5758947]] |- |[[الگو:PD-old-50-1923]]||[[d:Q19283050]] |- |[[الگو:PD-old-60-1923]]||[[d:Q19283053]] |- |[[الگو:PD-old-70-1923]]||[[d:Q19283057]] |- |[[الگو:PD-old-75-1923]]||[[d:Q19283061]] |- |[[الگو:PD-old-80-1923]]||[[d:Q19283064]] |- |[[الگو:PD-old-99-1923]]||[[d:Q19283066]] |- |[[الگو:Pp-meta]]||[[d:Q6028610]] |- |[[الگو:Redirect-distinguish2]]||[[d:Q19857166]] |- |[[الگو:Redirect-synonym]]||[[d:Q13421042]] |- |[[الگو:See also2]]||[[d:Q13107775]] |- |[[الگو:Side box]]||[[d:Q6906791]] |- |[[الگو:Sister]]||[[d:Q8213590]] |- |[[الگو:Str endswith]]||[[d:Q10518309]] |- |[[الگو:Tcplain]]||[[d:Q18228071]] |- |[[الگو:Technical reasons]]||[[d:Q18574997]] |- |[[الگو:This user talk]]||[[d:Q21856029]] |- |[[الگو:Time ago/core]]||[[d:Q12168883]] |- |[[الگو:Time ago]]||[[d:Q5625682]] |- |[[الگو:Tlpad]]||[[d:Q18122824]] |- |[[الگو:Toolserver/message]]||[[d:Q14936816]] |- |[[الگو:Toolserver]]||[[d:Q8114492]] |- |[[الگو:User de]]||[[d:Q5541223]] |- |[[الگو:User en-2]]||[[d:Q5544939]] |- |[[الگو:User en-4]]||[[d:Q5546014]] |- |[[الگو:User eo-3]]||[[d:Q5541209]] |- |[[الگو:User fa-0]]||[[d:Q6584484]] |- |[[الگو:User fa-1]]||[[d:Q5545992]] |- |[[الگو:User fr-1]]||[[d:Q5548625]] |- |[[الگو:User is-1]]||[[d:Q6081147]] |- |[[الگو:User ro-2]]||[[d:Q6967786]] |- |[[الگو:User ru-1]]||[[d:Q6967995]] |- |[[الگو:User yi-1]]||[[d:Q6156461]] |- |[[الگو:Wikivar]]||[[d:Q5614421]] |- |[[الگو:Ya]]||[[d:Q13407605]] |- |[[الگو:آزمایش]]||[[d:Q10740914]] |- |[[الگو:آغاز فهرست آثار]]||[[d:Q123384983]] |- |[[الگو:اثر]]||[[d:Q123385239]] |- |[[الگو:اخطار نگاره]]||[[d:Q14445900]] |- |[[الگو:اخطار]]||[[d:Q10859921]] |- |[[الگو:اصلی رده]]||[[d:Q6383110]] |- |[[الگو:افزودن بخش جدید]]||[[d:Q6003096]] |- |[[الگو:الگوی محافظت‌شده]]||[[d:Q5646673]] |- |[[الگو:امروز]]||[[d:Q6989997]] |- |[[الگو:ب]]||[[d:Q11000030]] |- |[[الگو:بدون منبع]]||[[d:Q5962027]] |- |[[الگو:به انگلیسی]]||[[d:Q14468757]] |- |[[الگو:به زبان دیگر]]||[[d:Q5824848]] |- |[[الگو:بیشتر۲]]||[[d:Q11442204]] |- |[[الگو:تاریخ مشارکت کاربر]]||[[d:Q5626885]] |- |[[الگو:ترجمه]]||[[d:Q10565367]] |- |[[الگو:تغییرمسیر]]||[[d:Q6042392]] |- |[[الگو:تغییرمسیر۳]]||[[d:Q5625924]] |- |[[الگو:تغییرمسیر۴]]||[[d:Q14388132]] |- |[[الگو:توضیح رده]]||[[d:Q6864866]] |- |[[الگو:جعبه رنگی‌شده]]||[[d:Q60596779]] |- |[[الگو:جعبه صفحه اصلی]]||[[d:Q18640277]] |- |[[الگو:جعبه]]||[[d:Q14941572]] |- |[[الگو:جمع‌شوندگی]]||[[d:Q5621491]] |- |[[الگو:حق تکثیر مشکوک]]||[[d:Q7745436]] |- |[[الگو:خوش آمدید]]||[[d:Q26016077]] |- |[[الگو:درباره۲]]||[[d:Q20750644]] |- |[[الگو:درخواست برای دسترسی]]||[[d:Q17378160]] |- |[[الگو:دست نگهدار]]||[[d:Q6242359]] |- |[[الگو:دیگر افراد۲]]||[[d:Q13099249]] |- |[[الگو:دیگر افراد۳]]||[[d:Q14410545]] |- |[[الگو:رده انبار]]||[[d:Q48029]] |- |[[الگو:رده زبان کاربران]]||[[d:Q26015330]] |- |[[الگو:رده پنهان]]||[[d:Q5879327]] |- |[[الگو:رنگ متن]]||[[d:Q14468760]] |- |[[الگو:روز دیلمی]]||[[d:Q8085014]] |- |[[الگو:سردر تغییرات اخیر]]||[[d:Q106190262]] |- |[[الگو:سرصفحه/بلوک اصلی]]||[[d:Q105626953]] |- |[[الگو:سنگ‌نبشته‌های هخامنشی]]||[[d:Q26021452]] |- |[[الگو:شعر]]||[[d:Q11160603]] |- |[[الگو:شکستن ورودی‌ها]]||[[d:Q6140715]] |- |[[الگو:صلی الله علیه وسلم]]||[[d:Q6873437]] |- |[[الگو:عبارت چپ به راست]]||[[d:Q26018687]] |- |[[الگو:عدد به انگلیسی]]||[[d:Q13360882]] |- |[[الگو:عدد به فارسی]]||[[d:Q15058701]] |- |[[الگو:عدد به]]||[[d:Q13360879]] |- |[[الگو:عربی]]||[[d:Q13360184]] |- |[[الگو:فم]]||[[d:Q14444956]] |- |[[الگو:م]]||[[d:Q11036760]] |- |[[الگو:مدرک]]||[[d:Q5312535]] |- |[[الگو:مرورگر]]||[[d:Q44609475]] |- |[[الگو:مقدمه راهنما چارچوب بالا]]||[[d:Q14405709]] |- |[[الگو:ن-م]]||[[d:Q6407319]] |- |[[الگو:نشان بالا]]||[[d:Q5835563]] |- |[[الگو:نشان مدیر]]||[[d:Q5622454]] |- |[[الگو:نشان گشت خودکار]]||[[d:Q6705530]] |- |[[الگو:نوار درصد]]||[[d:Q10514190]] |- |[[الگو:نوار رنگی]]||[[d:Q60950352]] |- |[[الگو:نگاره]]||[[d:Q5618653]] |- |[[الگو:هم‌ترازکردن]]||[[d:Q47461144]] |- |[[الگو:وسط درشت]]||[[d:Q125808942]] |- |[[الگو:ویکی‌نسک]]||[[d:Q5625111]] |- |[[الگو:ویکی‌واژه]]||[[d:Q5649364]] |- |[[الگو:ویکی‌پدیا]]||[[d:Q6275256]] |- |[[الگو:ویکی‌گفتاورد]]||[[d:Q5614687]] |- |[[الگو:پایان شعر]]||[[d:Q11163701]] |- |[[الگو:پایان فهرست آثار]]||[[d:Q123384994]] |- |[[الگو:چر]]||[[d:Q15633829]] |- |[[الگو:چپ به راست]]||[[d:Q15633827]] |- |[[الگو:•]]||[[d:Q6867717]] |} == در ویکی‌نبشته فارسی، فاقد آیتم ویکی‌داده == * https://quarry.wmcloud.org/query/109696 {| class="wikitable" !template |- |[[الگو:About-distinguish-custom]] |- |[[الگو:About-distinguish]] |- |[[الگو:Author]] |- |[[الگو:Category pair]] |- |[[الگو:Ct]] |- |[[الگو:DIRMARK]] |- |[[الگو:Db-meta]] |- |[[الگو:Details3]] |- |[[الگو:Distinguish2]] |- |[[الگو:For year month day]] |- |[[الگو:For2]] |- |[[الگو:Formatnumber]] |- |[[الگو:Header]] |- |[[الگو:Icon]] |- |[[الگو:Iso2dir]] |- |[[الگو:Languages]] |- |[[الگو:License]] |- |[[الگو:Ltr ends]] |- |[[الگو:Ltr]] |- |[[الگو:Nastaliq block]] |- |[[الگو:NoCat]] |- |[[الگو:Other places]] |- |[[الگو:PAGENAMEBASE]] |- |[[الگو:PD-old-30-1923]] |- |[[الگو:PDFLink]] |- |[[الگو:Pagetype]] |- |[[الگو:Personendaten]] |- |[[الگو:Plain sister]] |- |[[الگو:Pluralize from text]] |- |[[الگو:Pp-move]] |- |[[الگو:Pp-semi-template]] |- |[[الگو:Preceding category]] |- |[[الگو:Prettytable]] |- |[[الگو:Process header]] |- |[[الگو:QOK 1883-A]] |- |[[الگو:QOK 1883-B]] |- |[[الگو:QOK 1883-Bl]] |- |[[الگو:QOK 1883-C]] |- |[[الگو:QOK 1883-I]] |- |[[الگو:QOK 1883-J]] |- |[[الگو:QOK 1883-L]] |- |[[الگو:QOK 1883-N]] |- |[[الگو:Red]] |- |[[الگو:Redirect-distinguish]] |- |[[الگو:Static row numbers table]] |- |[[الگو:Static row numbers]] |- |[[الگو:Succeeding category]] |- |[[الگو:Tag link nostyle]] |- |[[الگو:Three other uses]] |- |[[الگو:Two other uses]] |- |[[الگو:Txt]] |- |[[الگو:Umbox]] |- |[[الگو:User de-1]] |- |[[الگو:User de-4]] |- |[[الگو:User en-3]] |- |[[الگو:User es-2]] |- |[[الگو:User fa-4]] |- |[[الگو:User fa-5]] |- |[[الگو:Userbox-level]] |- |[[الگو:Userbox]] |- |[[الگو:Verse]] |- |[[الگو:Wikidata Infobox]] |- |[[الگو:Wikidata image]] |- |[[الگو:آری-نه]] |- |[[الگو:آمار ویکی‌نبشته فارسی]] |- |[[الگو:إزالة الخفاء عن خلافة الخلفاء]] |- |[[الگو:اطلاعات قطع دسترسی]] |- |[[الگو:الگو-غیره]] |- |[[الگو:الگوب]] |- |[[الگو:الگوهای حفاظت]] |- |[[الگو:الگوهای سرنویس]] |- |[[الگو:الگوپ]] |- |[[الگو:الگوی]] |- |[[الگو:امروز دیلمی]] |- |[[الگو:انبار]] |- |[[الگو:بابل]] |- |[[الگو:باز نشد]] |- |[[الگو:بازبحث]] |- |[[الگو:بالای بایگانی]] |- |[[الگو:بایگانی برای صفحهٔ موضوعات روانی تبدیل شده]] |- |[[الگو:بایگانی برای ویکی‌متن صفحهٔ بحث تبدیل شده]] |- |[[الگو:بایگانی واگردان]] |- |[[الگو:بایگانی گشت]] |- |[[الگو:بخش اولدوز۲]] |- |[[الگو:بخش اولدوز۳]] |- |[[الگو:بدون خبرسازی]] |- |[[الگو:بر]] |- |[[الگو:بسته]] |- |[[الگو:بسملة]] |- |[[الگو:بسمله]] |- |[[الگو:بن]] |- |[[الگو:بند شعرنو]] |- |[[الگو:به فرانسوی]] |- |[[الگو:بیت خالی]] |- |[[الگو:بیشتر]] |- |[[الگو:بیهقی-ح]] |- |[[الگو:بیهقی-د]] |- |[[الگو:بیهقی-ط]] |- |[[الگو:بیهقی-فا]] |- |[[الگو:بیهقی-مج]] |- |[[الگو:بیهقی-مو]] |- |[[الگو:بیهقی-ن]] |- |[[الگو:بیهقی-ک]] |- |[[الگو:بیهقی-یب]] |- |[[الگو:ب۱]] |- |[[الگو:ب۲]] |- |[[الگو:تار]] |- |[[الگو:تاریخ الطبری ط بریل]] |- |[[الگو:تاریخ تولد]] |- |[[الگو:تاریخ طبری]] |- |[[الگو:تاریخ مرگ و سن]] |- |[[الگو:تحفه اثنا عشریه]] |- |[[الگو:تست3 تست3]] |- |[[الگو:تصحیح سلامان]] |- |[[الگو:تغییر مسیر۲]] |- |[[الگو:تقابل]] |- |[[الگو:تمرین]] |- |[[الگو:ته]] |- |[[الگو:توضیحات الگوهای سرنویس]] |- |[[الگو:تیترتوکار]] |- |[[الگو:جزئیات]] |- |[[الگو:جعبه اطلاعات زندگی‌نامه]] |- |[[الگو:جعبه زندگینامه]] |- |[[الگو:جعبه پیوند به پروژه‌های خواهر]] |- |[[الگو:جلالی]] |- |[[الگو:جلدهای مصوبات مجلس شورای ملی]] |- |[[الگو:حافظ-الف]] |- |[[الگو:حافظ-ب]] |- |[[الگو:حافظ-ت]] |- |[[الگو:حافظ-تقوی ۲]] |- |[[الگو:حافظ-تقوی]] |- |[[الگو:حافظ-حن]] |- |[[الگو:حافظ-خ]] |- |[[الگو:حافظ-دبیرخاقان]] |- |[[الگو:حافظ-ر]] |- |[[الگو:حافظ-س]] |- |[[الگو:حافظ-سودی]] |- |[[الگو:حافظ-سپه]] |- |[[الگو:حافظ-ط]] |- |[[الگو:حافظ-ق]] |- |[[الگو:حافظ-ل]] |- |[[الگو:حافظ-م]] |- |[[الگو:حافظ-ملک]] |- |[[الگو:حافظ-منعم]] |- |[[الگو:حافظ-نخ]] |- |[[الگو:حافظ-نص]] |- |[[الگو:حافظ-نواب]] |- |[[الگو:حافظ-هندی]] |- |[[الگو:حافظ-ک]] |- |[[الگو:حافظ-ی]] |- |[[الگو:حق تکثیر تصویر نامعلوم۲]] |- |[[الگو:خط نقطه‌چین فهرست]] |- |[[الگو:خطکش-پانویس-کوچک]] |- |[[الگو:دارای نستعلیق]] |- |[[الگو:درباره]] |- |[[الگو:درگاه مادر]] |- |[[الگو:دیگر افراد]] |- |[[الگو:دیگر کاربردها]] |- |[[الگو:رایانامه]] |- |[[الگو:رباعی خیام فروغی]] |- |[[الگو:رباعی مشکوک ترانه‌های خیام]] |- |[[الگو:رده وابسته]] |- |[[الگو:رسته‌های بنیادی]] |- |[[الگو:رضی الله عنه]] |- |[[الگو:رضی الله عنها]] |- |[[الگو:رضی الله عنهم]] |- |[[الگو:رضی الله عنهما]] |- |[[الگو:رچ]] |- |[[الگو:رک]] |- |[[الگو:زرین‌کوب]] |- |[[الگو:سبک جدول اولدوز]] |- |[[الگو:سبک سطر اولدوز]] |- |[[الگو:ستاره]] |- |[[الگو:سرخ]] |- |[[الگو:سردر دفترخانه]] |- |[[الگو:سرصفحه داستان]] |- |[[الگو:سرصفحه درگاه‌ها]] |- |[[الگو:سرصفحه راهنما]] |- |[[الگو:سرصفحه صفحه اصلی۲]] |- |[[الگو:سعدی-ابیات ساقط]] |- |[[الگو:سعدی-ب]] |- |[[الگو:سعدی-تجدیدنظر]] |- |[[الگو:سعدی-خ]] |- |[[الگو:سعدی-س]] |- |[[الگو:سعدی-ص]] |- |[[الگو:سعدی-ط]] |- |[[الگو:سعدی-غلطنامه]] |- |[[الگو:سعدی-ق]] |- |[[الگو:سعدی-لغات]] |- |[[الگو:سعدی-م]] |- |[[الگو:سعدی-پا]] |- |[[الگو:سن]] |- |[[الگو:سنگنبشته گنجنامه]] |- |[[الگو:سه دایره بهار]] |- |[[الگو:سه ستاره بهار]] |- |[[الگو:شرح]] |- |[[الگو:شعرنو]] |- |[[الگو:شماره برگه در فهرست]] |- |[[الگو:شماره رباعی ترانه‌های خیام]] |- |[[الگو:شماره‌های صور اسرافیل]] |- |[[الگو:شک]] |- |[[الگو:صادق هدایت]] |- |[[الگو:صفحه کاربری استاندارد]] |- |[[الگو:صفحهٔ موضوعات روان به جریان تبدیل شد]] |- |[[الگو:صفحه‌های بی‌سند]] |- |[[الگو:صل]] |- |[[الگو:صلى الله عليه وآله وسلم]] |- |[[الگو:صلى الله عليه وآله]] |- |[[الگو:طبرستان-الف]] |- |[[الگو:طبرستان-ب]] |- |[[الگو:طبرستان-ج]] |- |[[الگو:عدد سیاقی]] |- |[[الگو:عليه السلام]] |- |[[الگو:عليه الصلاة والسلام]] |- |[[الگو:عليهم السلام]] |- |[[الگو:عنوان]] |- |[[الگو:غ]] |- |[[الگو:غلق]] |- |[[الگو:فراویکی-درخط]] |- |[[الگو:فرهنگستان-ب]] |- |[[الگو:فرهنگستان-ج]] |- |[[الگو:فرهنگستان-ح]] |- |[[الگو:فرهنگستان-د]] |- |[[الگو:فرهنگستان-ز]] |- |[[الگو:فرهنگستان-ش]] |- |[[الگو:فرهنگستان-ط]] |- |[[الگو:فرهنگستان-ف]] |- |[[الگو:فرهنگستان-پ]] |- |[[الگو:فرهنگستان-گ]] |- |[[الگو:فروغ فرخزاد]] |- |[[الگو:فهرست محتویات رده]] |- |[[الگو:فهرست یک‌دست]] |- |[[الگو:قا]] |- |[[الگو:قابوس-ح]] |- |[[الگو:قابوس-خ]] |- |[[الگو:قابوس-ظ]] |- |[[الگو:قطع۱]] |- |[[الگو:قطع۲]] |- |[[الگو:قطع۳]] |- |[[الگو:لحن نامناسب]] |- |[[الگو:لوآ]] |- |[[الگو:مؤلف۲]] |- |[[الگو:مؤلف۳]] |- |[[الگو:مالکیت عمومی توسط پدیدآورنده]] |- |[[الگو:مالکیت عمومی]] |- |[[الگو:ماهنامه شرف]] |- |[[الگو:مجلس شورای اسلامی]] |- |[[الگو:مجوز گنو-خود]] |- |[[الگو:مجوز گنو]] |- |[[الگو:محدوده مجوز]] |- |[[الگو:مدیر ویکی‌پدیا]] |- |[[الگو:مشکوک]] |- |[[الگو:مصراع خالی]] |- |[[الگو:مقدمه راهنما برگ کناری]] |- |[[الگو:منصفانه]] |- |[[الگو:ناعخ-ئف]] |- |[[الگو:ناعخ-بو]] |- |[[الگو:ناعخ-جه]] |- |[[الگو:ناعخ-حج]] |- |[[الگو:ناعخ-رز]] |- |[[الگو:ناعخ-سع]] |- |[[الگو:ناعخ-صا]] |- |[[الگو:ناعخ-غن]] |- |[[الگو:ناعخ-مج]] |- |[[الگو:ناعخ-مر]] |- |[[الگو:ناعخ-مو]] |- |[[الگو:ناعخ-نز]] |- |[[الگو:ناعخ-کز]] |- |[[الگو:ناعخ-کم]] |- |[[الگو:نامه‌ها و فرمان‌های شاه صفی]] |- |[[الگو:نثر]] |- |[[الگو:نحش]] |- |[[الگو:نسخه‌های دیگر]] |- |[[الگو:نشان واگردان]] |- |[[الگو:نشان گشت‌زن]] |- |[[الگو:نشان]] |- |[[الگو:نطاق]] |- |[[الگو:نظر]] |- |[[الگو:نظرخواهی‌ها]] |- |[[الگو:نقطه خط]] |- |[[الگو:نمونه‌خوانی شده]] |- |[[الگو:نوارابزار]] |- |[[الگو:نوشتار برگزیده]] |- |[[الگو:نکته ظاهرشونده]] |- |[[الگو:نگاره قدیمی]] |- |[[الگو:نیازمند انگلیسی]] |- |[[الگو:نیازمند ترجمه]] |- |[[الگو:نیازمند جدول اعداد سیاقی]] |- |[[الگو:هم‌سنجی شده]] |- |[[الگو:هم‌سنجی‌شده]] |- |[[الگو:هم‌سنج‌شده]] |- |[[الگو:وحشی-س]] |- |[[الگو:وحشی-م]] |- |[[الگو:وحشی-چ]] |- |[[الگو:وسط بزرگتر]] |- |[[الگو:وسط بزرگتر۱]] |- |[[الگو:وسط بزرگتر۲]] |- |[[الگو:وسط بزرگتر۳]] |- |[[الگو:وسط بزرگتر۴]] |- |[[الگو:وسط کوچکتر]] |- |[[الگو:وسط کوچکتر۱]] |- |[[الگو:وسط کوچکتر۲]] |- |[[الگو:وسط‌چین]] |- |[[الگو:وک۲]] |- |[[الگو:ویرایش زیرصفحه]] |- |[[الگو:ویرایش]] |- |[[الگو:ویرگول خط]] |- |[[الگو:ویکی سازی]] |- |[[الگو:ویکی‌انبار]] |- |[[الگو:ویکی‌متن صفحهٔ بحث تبدیل شده به جریان]] |- |[[الگو:ویکی‌نبشته]] |- |[[الگو:پانویس‌ها]] |- |[[الگو:پایان بند شعرنو]] |- |[[الگو:پایان شعرنو]] |- |[[الگو:پایان عنوان]] |- |[[الگو:پایان وسط‌چین]] |- |[[الگو:پایان پانویس‌ها]] |- |[[الگو:پایان چپ‌چین]] |- |[[الگو:پایان کوچک]] |- |[[الگو:پایان گفتاورد بزرگ]] |- |[[الگو:پایان]] |- |[[الگو:پایین بایگانی]] |- |[[الگو:پدیدآورنده۲]] |- |[[الگو:پروژه خواهر]] |- |[[الگو:پروژه‌های بزرگ]] |- |[[الگو:پروژه‌های ویکی]] |- |[[الگو:پیشخان جلد]] |- |[[الگو:پیوند الگو]] |- |[[الگو:پیوند بارگذاری]] |- |[[الگو:پیوند رباعی ترانه‌های خیام]] |- |[[الگو:پیوند رباعی خیام رمضانی]] |- |[[الگو:پیوند]] |- |[[الگو:چپ‌چین]] |- |[[الگو:کاربر بسته شده]] |- |[[الگو:کاربر فراویکی]] |- |[[الگو:کاربر ویرایش سراسری]] |- |[[الگو:کاربر ویکی‌نسک]] |- |[[الگو:کاربر ویکی‌واژه]] |- |[[الگو:کاربر ویکی‌پدیا]] |- |[[الگو:کاربر ویکی‌گفتاورد]] |- |[[الگو:کاربر پروژه‌های خواهر]] |- |[[الگو:کوچک]] |- |[[الگو:گرداننده رده]] |- |[[الگو:گفتاورد بزرگ]] |- |[[الگو:گفتاورد]] |- |[[الگو:یادکرد]] |- |[[الگو:یونی‌کد]] |} == دارای آیتم ویکی‌داده، تنها شامل ویکی‌نبشته فارسی == * https://quarry.wmcloud.org/query/109697 {| class="wikitable" !template!!qid |- |[[الگو:CTOC-content-nl]]||[[d:Q27910151]] |- |[[الگو:CTOC-content]]||[[d:Q27910138]] |- |[[الگو:CTOC-title-nl]]||[[d:Q27910149]] |- |[[الگو:CTOC-title]]||[[d:Q27910143]] |} == عنوان غیرفارسی == https://quarry.wmcloud.org/query/109968 {| class="wikitable" !template |- |[[الگو:About-distinguish-custom]] |- |[[الگو:About-distinguish2]] |- |[[الگو:About-distinguish]] |- |[[الگو:Aligned couplet]] |- |[[الگو:Aligned table]] |- |[[الگو:Ambox]] |- |[[الگو:Annotate QID]] |- |[[الگو:Anon]] |- |[[الگو:Asbox]] |- |[[الگو:Asterism]] |- |[[الگو:Author]] |- |[[الگو:Authority control]] |- |[[الگو:Authority reference]] |- |[[الگو:BLP editintro]] |- |[[الگو:Babel]] |- |[[الگو:Bar]] |- |[[الگو:Biblecontents]] |- |[[الگو:Bigmath]] |- |[[الگو:Blackletter]] |- |[[الگو:Blank]] |- |[[الگو:Block center]] |- |[[الگو:Block left]] |- |[[الگو:Block right]] |- |[[الگو:Bold block]] |- |[[الگو:Border-radius]] |- |[[الگو:Border]] |- |[[الگو:Bot]] |- |[[الگو:Box-footer]] |- |[[الگو:Box-header]] |- |[[الگو:Box-shadow]] |- |[[الگو:Brace table parameters]] |- |[[الگو:Brace2]] |- |[[الگو:CTOC-content-nl]] |- |[[الگو:CTOC-content]] |- |[[الگو:CTOC-title-nl]] |- |[[الگو:CTOC-title]] |- |[[الگو:Categories by date]] |- |[[الگو:Category handler]] |- |[[الگو:Category pair]] |- |[[الگو:CategoryTOC]] |- |[[الگو:Cc-by-4.0]] |- |[[الگو:Center or HI]] |- |[[الگو:Centered Box]] |- |[[الگو:Circled text]] |- |[[الگو:Cited]] |- |[[الگو:Cmbox]] |- |[[الگو:CodeFedReg]] |- |[[الگو:Code]] |- |[[الگو:Col-begin]] |- |[[الگو:Col-break]] |- |[[الگو:Col-end]] |- |[[الگو:Colbegin]] |- |[[الگو:Colend]] |- |[[الگو:Column-count]] |- |[[الگو:Column-gap]] |- |[[الگو:Column-rule]] |- |[[الگو:Commons category link]] |- |[[الگو:Continues]] |- |[[الگو:Copyright-until]] |- |[[الگو:Crlf2]] |- |[[الگو:Ct]] |- |[[الگو:Custom rule segment]] |- |[[الگو:DIRMARK]] |- |[[الگو:Dashed line]] |- |[[الگو:Db-meta]] |- |[[الگو:Default layout]] |- |[[الگو:Details3]] |- |[[الگو:Diagonal split header]] |- |[[الگو:Diff]] |- |[[الگو:Dir]] |- |[[الگو:Disambiguation]] |- |[[الگو:Distinguish2]] |- |[[الگو:Ditto bar thin]] |- |[[الگو:Ditto bar]] |- |[[الگو:Div col end]] |- |[[الگو:Div col]] |- |[[الگو:Div end]] |- |[[الگو:Doc example]] |- |[[الگو:Dotted TOC page listing]] |- |[[الگو:Double rule]] |- |[[الگو:Dropinitial]] |- |[[الگو:Editnotice load]] |- |[[الگو:Editnotice]] |- |[[الگو:Editprotected]] |- |[[الگو:Em]] |- |[[الگو:Empty TOC]] |- |[[الگو:End]] |- |[[الگو:Ensure AAA contrast ratio]] |- |[[الگو:FULLROOTPAGENAME]] |- |[[الگو:File other]] |- |[[الگو:Fine block]] |- |[[الگو:Fine]] |- |[[الگو:Flatlist]] |- |[[الگو:Flex wrap centre]] |- |[[الگو:Floating quotation mark]] |- |[[الگو:FlowMention]] |- |[[الگو:Fmbox]] |- |[[الگو:Font size block]] |- |[[الگو:Font-size-base]] |- |[[الگو:Font-size-x]] |- |[[الگو:Font-size70%]] |- |[[الگو:Font-size90%]] |- |[[الگو:Font-weight-normal]] |- |[[الگو:For year month day]] |- |[[الگو:For2]] |- |[[الگو:Formatnumber]] |- |[[الگو:Frac]] |- |[[الگو:Framed page]] |- |[[الگو:FreedImg]] |- |[[الگو:Gutenberg]] |- |[[الگو:HTML attribute]] |- |[[الگو:Header]] |- |[[الگو:HideIfEmpty]] |- |[[الگو:High-risk]] |- |[[الگو:Hlist]] |- |[[الگو:IRC]] |- |[[الگو:ISO 639 name]] |- |[[الگو:Icon]] |- |[[الگو:IfEmptyDo]] |- |[[الگو:Ifsubst]] |- |[[الگو:Image removed]] |- |[[الگو:ImageNoteControl]] |- |[[الگو:Imbox]] |- |[[الگو:Img float]] |- |[[الگو:Index progress pie chart]] |- |[[الگو:Index talk remarks]] |- |[[الگو:Indigo]] |- |[[الگو:Infobox]] |- |[[الگو:Infosection]] |- |[[الگو:Inline-block]] |- |[[الگو:Internet Archive small link]] |- |[[الگو:Internet Archive small links]] |- |[[الگو:Interwiki-info]] |- |[[الگو:Interwikitmp-grp]] |- |[[الگو:Inverted asterism]] |- |[[الگو:Invisible reference]] |- |[[الگو:Is century]] |- |[[الگو:Is decade]] |- |[[الگو:Is number]] |- |[[الگو:Is year]] |- |[[الگو:Iso2dir]] |- |[[الگو:Issue banner]] |- |[[الگو:Italic block]] |- |[[الگو:Iwtrans]] |- |[[الگو:Kbd]] |- |[[الگو:Key press]] |- |[[الگو:Klick]] |- |[[الگو:LQT Moved thread stub converted to Flow]] |- |[[الگو:LQT post imported with different signature user]] |- |[[الگو:LQT post imported with supressed user]] |- |[[الگو:Lang block]] |- |[[الگو:Lang2dir]] |- |[[الگو:LangSwitch]] |- |[[الگو:Lang]] |- |[[الگو:Language characters]] |- |[[الگو:Languages]] |- |[[الگو:Largeinitial]] |- |[[الگو:Larger block]] |- |[[الگو:Last month]] |- |[[الگو:Letter-spacing]] |- |[[الگو:License]] |- |[[الگو:Line break]] |- |[[الگو:Linkable phrase end]] |- |[[الگو:Linkable phrase start]] |- |[[الگو:Locus sigilli]] |- |[[الگو:Longdash]] |- |[[الگو:Loop]] |- |[[الگو:Lua]] |- |[[الگو:M-larger]] |- |[[الگو:MC-Cover]] |- |[[الگو:MONTHNAMEEN]] |- |[[الگو:MONTHNUMBER]] |- |[[الگو:Main Page SEO description]] |- |[[الگو:Main list]] |- |[[الگو:Main other]] |- |[[الگو:Makeid]] |- |[[الگو:Manuscript Deletion]] |- |[[الگو:Manuscript Erasure]] |- |[[الگو:Manuscript Insertion]] |- |[[الگو:Manuscript Joiner end]] |- |[[الگو:Manuscript Joiner start]] |- |[[الگو:Manuscript Replacement]] |- |[[الگو:Manuscript Substitution]] |- |[[الگو:Mbox]] |- |[[الگو:Mfrac]] |- |[[الگو:Migrate to djvu]] |- |[[الگو:Mod]] |- |[[الگو:Monthly Challenge month overview]] |- |[[الگو:Monthly Challenge sprint]] |- |[[الگو:Monthly Challenge statistics]] |- |[[الگو:Multicol-break]] |- |[[الگو:Multicol-end]] |- |[[الگو:Multicol-section]] |- |[[الگو:Multiple image]] |- |[[الگو:Na]] |- |[[الگو:Namespace detect]] |- |[[الگو:Namespace link]] |- |[[الگو:Nastaliq block]] |- |[[الگو:National]] |- |[[الگو:Navbar]] |- |[[الگو:Navbox with collapsible groups]] |- |[[الگو:Navbox]] |- |[[الگو:Navimg]] |- |[[الگو:New texts navigation]] |- |[[الگو:NoCat]] |- |[[الگو:Nobots]] |- |[[الگو:Noinclude]] |- |[[الگو:Nop]] |- |[[الگو:Nopt]] |- |[[الگو:Nospam]] |- |[[الگو:Nosubst]] |- |[[الگو:Notelist]] |- |[[الگو:Nowrap]] |- |[[الگو:Nr]] |- |[[الگو:Ns has subpages]] |- |[[الگو:Numbers]] |- |[[الگو:Ombox]] |- |[[الگو:Only in print]] |- |[[الگو:Optional style]] |- |[[الگو:Other people5]] |- |[[الگو:Other places3]] |- |[[الگو:Other places]] |- |[[الگو:Other ships]] |- |[[الگو:Otrs]] |- |[[الگو:Overfloat image]] |- |[[الگو:PAGENAMEBASE]] |- |[[الگو:PD-1996]] |- |[[الگو:PD-UN]] |- |[[الگو:PD-US-no-renewal]] |- |[[الگو:PD-US]] |- |[[الگو:PD-old-30-1923]] |- |[[الگو:PD-old-50-1923]] |- |[[الگو:PD-old-60-1923]] |- |[[الگو:PD-old-70-1923]] |- |[[الگو:PD-old-75-1923]] |- |[[الگو:PD-old-80-1923]] |- |[[الگو:PD-old-99-1923]] |- |[[الگو:PDFLink]] |- |[[الگو:Page break]] |- |[[الگو:Page end hyphen]] |- |[[الگو:Page status text]] |- |[[الگو:Pagenum]] |- |[[الگو:Pagetype]] |- |[[الگو:Personendaten]] |- |[[الگو:Plain sister]] |- |[[الگو:Plain text]] |- |[[الگو:Plainlinks]] |- |[[الگو:Plainlist]] |- |[[الگو:Pline]] |- |[[الگو:Pluralize from text]] |- |[[الگو:Pmbox]] |- |[[الگو:Poem begin]] |- |[[الگو:Poem end]] |- |[[الگو:Poem-off]] |- |[[الگو:Poem-on]] |- |[[الگو:Pp-meta]] |- |[[الگو:Pp-move]] |- |[[الگو:Pp-semi-template]] |- |[[الگو:Ppoem]] |- |[[الگو:Preceding category]] |- |[[الگو:Prettytable]] |- |[[الگو:Process header]] |- |[[الگو:Process subpage]] |- |[[الگو:Progress bar]] |- |[[الگو:Progress pie chart]] |- |[[الگو:Progress]] |- |[[الگو:QOK 1883 note]] |- |[[الگو:QOK 1883 verse link]] |- |[[الگو:QOK 1883 verse]] |- |[[الگو:QOK 1883-A]] |- |[[الگو:QOK 1883-B]] |- |[[الگو:QOK 1883-Bl]] |- |[[الگو:QOK 1883-C]] |- |[[الگو:QOK 1883-I]] |- |[[الگو:QOK 1883-J]] |- |[[الگو:QOK 1883-L]] |- |[[الگو:QOK 1883-N]] |- |[[الگو:RebeccaPurple]] |- |[[الگو:Reconstruct]] |- |[[الگو:Recto-verso]] |- |[[الگو:Red]] |- |[[الگو:Redact]] |- |[[الگو:Redirect-distinguish2]] |- |[[الگو:Redirect-distinguish]] |- |[[الگو:Redirect-synonym]] |- |[[الگو:Ref]] |- |[[الگو:Reflist-talk]] |- |[[الگو:Refn]] |- |[[الگو:Refsfr]] |- |[[الگو:Rellink]] |- |[[الگو:Sans-serif]] |- |[[الگو:Scan page link]] |- |[[الگو:Section end rule]] |- |[[الگو:See also2]] |- |[[الگو:Separator]] |- |[[الگو:Sfrac]] |- |[[الگو:Sibling]] |- |[[الگو:Side box]] |- |[[الگو:Small-caps]] |- |[[الگو:Smaller block]] |- |[[الگو:Softredirect]] |- |[[الگو:Sp]] |- |[[الگو:Span end]] |- |[[الگو:Static row numbers table]] |- |[[الگو:Static row numbers]] |- |[[الگو:Str endswith]] |- |[[الگو:Str left]] |- |[[الگو:Subst]] |- |[[الگو:Succeeding category]] |- |[[الگو:Sup]] |- |[[الگو:Symbol missing]] |- |[[الگو:TOC begin]] |- |[[الگو:TOC end]] |- |[[الگو:TOC limit]] |- |[[الگو:TOC line]] |- |[[الگو:TOC link]] |- |[[الگو:TOC page listing]] |- |[[الگو:TOC row 1-1-1]] |- |[[الگو:TOC row 1-dot-1]] |- |[[الگو:TOC row 2-1]] |- |[[الگو:TOC row 2dot-1]] |- |[[الگو:TOC row c]] |- |[[الگو:TOC row l]] |- |[[الگو:TOC row r]] |- |[[الگو:TOC]] |- |[[الگو:TOCstyle]] |- |[[الگو:Table style]] |- |[[الگو:Tag link nostyle]] |- |[[الگو:Tag]] |- |[[الگو:Talk other]] |- |[[الگو:Tcplain]] |- |[[الگو:Teal]] |- |[[الگو:Technical reasons]] |- |[[الگو:Template other]] |- |[[الگو:TemplateDataHeader]] |- |[[الگو:Text removed]] |- |[[الگو:Text-indent]] |- |[[الگو:TextQuality]] |- |[[الگو:This user talk]] |- |[[الگو:Three other uses]] |- |[[الگو:Time ago]] |- |[[الگو:Tl-nav]] |- |[[الگو:Tlc]] |- |[[الگو:Tld]] |- |[[الگو:Tlf]] |- |[[الگو:Tlg]] |- |[[الگو:Tlp]] |- |[[الگو:Tlpad]] |- |[[الگو:Tlx]] |- |[[الگو:Tlxb]] |- |[[الگو:Tmbox]] |- |[[الگو:Toolbar]] |- |[[الگو:Toolserver]] |- |[[الگو:Transclude]] |- |[[الگو:Transparent]] |- |[[الگو:Two other uses]] |- |[[الگو:Txt]] |- |[[الگو:URL]] |- |[[الگو:Uhtml]] |- |[[الگو:Umbox]] |- |[[الگو:Unbulleted list]] |- |[[الگو:Unspaced page end]] |- |[[الگو:User de-1]] |- |[[الگو:User de-4]] |- |[[الگو:User de]] |- |[[الگو:User en-2]] |- |[[الگو:User en-3]] |- |[[الگو:User en-4]] |- |[[الگو:User eo-3]] |- |[[الگو:User es-2]] |- |[[الگو:User fa-0]] |- |[[الگو:User fa-1]] |- |[[الگو:User fa-4]] |- |[[الگو:User fa-5]] |- |[[الگو:User fr-1]] |- |[[الگو:User is-1]] |- |[[الگو:User ro-2]] |- |[[الگو:User ru-1]] |- |[[الگو:User yi-1]] |- |[[الگو:Userbox-level]] |- |[[الگو:Userbox]] |- |[[الگو:Uw-vandalism1]] |- |[[الگو:Uw-vandalism2]] |- |[[الگو:Var]] |- |[[الگو:Violet]] |- |[[الگو:WP link]] |- |[[الگو:W]] |- |[[الگو:What era is]] |- |[[الگو:Wide space]] |- |[[الگو:Wikidata Infobox]] |- |[[الگو:Wikidata entity link]] |- |[[الگو:Wikidata image]] |- |[[الگو:Wikivar]] |- |[[الگو:Word-spacing]] |- |[[الگو:Works by license subcat]] |- |[[الگو:X-larger block]] |- |[[الگو:X-smaller block]] |- |[[الگو:Xx-larger block]] |- |[[الگو:Xx-smaller block]] |- |[[الگو:Xxx-larger block]] |- |[[الگو:Xxx-smaller]] |- |[[الگو:Xxxx-larger block]] |- |[[الگو:Xxxx-smaller]] |- |[[الگو:Ya]] |- |[[الگو:Years ago]] |- |[[الگو:Yesno]] |} miqkql6ug5b93i6etawll83108puvzs الگو:شعر۲/styles.css 10 97053 305265 305109 2026-10-19T18:24:30Z Hanooz 17889 305265 sanitized-css text/css /* * الگو:شعر/styles.css — شیوه‌نامهٔ TemplateStyles برای «پودمان:شعر» * محتوای این صفحه باید از نوع «Sanitized CSS» باشد؛ پیشوند .mw-parser-output * را خود افزونه اضافه می‌کند. */ /* ─── فاصله‌ها (همه یک‌جا) ────────────────────────────────────────────────── * فاصلهٔ دو مصراع = ستون میانی (.poem-num-c ≈ ۴em) + حاشیهٔ درونی دو مصراع (۲×۰٫۴em). * شمارهٔ ابیات به لبهٔ بیرونی می‌چسبد و فاصله‌اش تا مصراع = پهنای ستونِ کناری منهای خودِ شماره. * در جدولِ هم‌اندازهٔ محتوا (شعر دوطرفه) ستون‌های میانی و کناری «انعطاف‌پذیر»اند: وقتی فضا کم * می‌شود، پیش از هر چیز همین‌ها کوچک می‌شوند (بدونِ هیچ media query) و متن مصراع‌ها دست‌نخورده * می‌ماند؛ سپس فاصلهٔ واژه‌ها (پایین‌تر)، و در نهایت چیدمان ستونی. * (.poem-num کوچک‌تر (۸۵٪) نوشته می‌شود، پس em‌های آن ×۰٫۸۵ است.) */ .poem-m { padding-left: 0.6em; padding-right: 0.6em; } .poem-num-c { width: 5.5em; } .poem-g { width: 4.7em; } .poem-s { width: 3.4em; } .poem-num-c { padding-left: 0.5em; padding-right: 0.5em; } .poem-num-r { width: 4em; padding-left: 0.5em; padding-right: 0.5em; } .poem-num-l { width: 4em; padding-left: 1.4em; padding-right: 0.5em; } /* ─── نستعلیق ─────────────────────────────────────────────────────────────── * قلم و اندازه از خودِ الگوی «نستعلیق» می‌آید: پودمان {{نستعلیق|…}} را صدا می‌زند و * کلاس/قلمی را که آن الگو (و «الگو:نستعلیق/styles.css») می‌گذارد روی شعر می‌نشاند؛ پس هر * تغییر در آن صفحه‌ها خودکار به شعرها می‌رسد. اینجا فقط می‌گوییم سلول‌ها و مصراع‌ها از * شعر ارث ببرند تا قاعده‌های سایت برای td/.b قلم را عوض نکنند. */ .poem-table.nastaliq td, .poem-table.nastaliq .beyt { font-family: inherit; font-size: inherit; line-height: inherit; } /* مصراع‌ها وسط‌چین (پایه) */ .poem-row { text-align: center; } /* ─── ترازبندی مصراع‌ها (کلاس‌هایی که پودمان می‌گذارد) ───────────────────────── * start/end بسته به جهت متن‌اند (در فارسی: start = راست، end = چپ). * «میانه» (پیش‌فرض بیت): مصراع ۱ end، مصراع ۲ start ← هر دو به محور میانی می‌چسبند. * «لبه» (پیش‌فرض بیت۱ و نردبانی): مصراع ۱ start (راست)، مصراع ۲ end (چپ). */ .poem-a-start { text-align: start; } .poem-a-end { text-align: end; } .poem-a-right { text-align: right; } .poem-a-left { text-align: left; } .poem-a-justify { text-align: justify; text-align-last: justify; } /* ─── شعر دوطرفه ───────────────────────────────────────────────────────────── * مصراع نمی‌شکند تا کشش (و عرض همهٔ مصراع‌ها) ثابت بماند؛ ستون‌های حاشیه و میان کوچک می‌شوند. */ .poem-just .poem-m { white-space: nowrap; } /* با عرضِ صریح (جدول ثابت) ستون‌ها از پیش تعیین شده‌اند: مصراعِ بلندتر بشکند، نه سرریز کند */ .poem-fixed.poem-just .poem-m { white-space: normal; } /* ─── ارجاع (&lt;ref&gt;) در پایان مصراع ─────────────────────────────────────────── * پودمان نشانه را از متن مصراع جدا و در پایانِ آن می‌گذارد؛ عرضِ صفر یعنی در عرض و کشش مصراع * نمی‌شمارد و بیرون از لبهٔ پایانی آویزان می‌شود. همهٔ مصراع‌ها هم‌اندازه می‌مانند. */ .poem-ref { display: inline-block; width: 0; white-space: nowrap; } /* ─── نسخهٔ نامرئیِ اندازه‌گیر ───────────────────────────────────────────────────── * در شعر دوطرفه هر سلولِ مصراع یک نسخهٔ نامرئی از مصراعِ هم‌بیت هم دارد (بدون ارجاع)؛ در نتیجه * هر دو ستون به اندازهٔ بلندترین مصراعِ کل شعر می‌شوند و همهٔ مصراع‌ها هم‌اندازه‌اند. * ارتفاع صفر و نامرئی است، پس چیزی دیده یا انتخاب نمی‌شود. */ .poem-sz { display: block; height: 0; overflow: hidden; visibility: hidden; white-space: nowrap; } /* نمادِ میان دو مصراع (جداکننده=…) */ .poem-sep { color: #b3362b; font-size: 90%; } /* شمارهٔ ابیات: کوچک‌تر، بدون شکستن خط، چسبیده به لبهٔ بیرونی */ .poem-num { font-size: 85%; white-space: nowrap; } .poem-num-r { text-align: right; } .poem-num-l { text-align: left; } /* مصراع تنها با تراز راست یا چپ (شعر نو) */ .poem-m-right { text-align: right; } .poem-m-left { text-align: left; } /* سلول‌های فاصله‌گذار در بیت‌های پلکانی و ردیف فاصله */ .poem-indent, .poem-gapcell { padding: 0; } /* ─── چیدمان ثابت (پیش‌فرض) ────────────────────────────────────────────────── * ستون‌ها را ردیف نامرئی .poem-sizer تعیین می‌کند (.poem-s کنار، .poem-g میان)؛ * عرض و حداکثر عرض روی جعبهٔ .poem-fixed می‌نشیند، پس همهٔ جدول‌های یک شعر * هم‌اندازه‌اند. (اینجا font-size صفر نمی‌شود: عرض‌ها با em نوشته شده‌اند.) */ .poem-fixed .poem-sizer td { padding: 0; border: 0; height: 0; line-height: 0; } .poem-fixed .b { overflow-wrap: break-word; } /* شعر چندصفحه‌ای: ردیف نامرئی که جای «ادامه» می‌نشیند (خط خالی پدید نیاید) */ .poem-skip { display: none; } /* پیش‌نمایش در فضای نام «صفحه»: ردیفی که از صفحهٔ قبل می‌آید یا به صفحهٔ بعد می‌رود */ .poem-partial-end td.b { border-bottom: 1px dashed; } .poem-partial-start td.b { border-top: 1px dashed; } /* ─── فاصلهٔ واژه‌ها در شعر دوطرفه، پیش از ستونی‌شدن ─────────────────────────────── * گام ۱ و ۲: فاصلهٔ واژه‌ها اندکی کم می‌شود تا مصراع‌ها هنوز در یک خط جا شوند. * فضای نام «صفحه»: تصویر نیمی از پنجره را می‌گیرد و قلمِ متن درشت‌تر است، پس همهٔ آستانه‌ها * بسیار بالاترند. (محدودیت: TemplateStyles از container query پشتیبانی نمی‌کند، پس آستانه‌ها بر پایهٔ * پهنای پنجره‌اند، نه پهنای واقعیِ ستونِ متن. برای یک شعر: تلفن=همیشه یا تلفن=دوستونه.) */ @media (max-width: 70em) { .poem-just .poem-m { word-spacing: -0.06em; } } @media (max-width: 60em) { .poem-just .poem-m { word-spacing: -0.12em; } } @media (max-width: 140em) { .poem-page.poem-just .poem-m { word-spacing: -0.06em; } } @media (max-width: 130em) { .poem-page.poem-just .poem-m { word-spacing: -0.12em; } } /* ─── صفحهٔ باریک: هر بیت زیر هم، مانند گنجور ──────────────────────────────────── * شماره بالا، دو مصراع وسط‌چین زیر هم، و خط‌چینِ جداکننده بعد از هر بیت (در بیت‌های پلکانی * بعد از خط دوم). نماد و نسخهٔ نامرئیِ اندازه‌گیر حذف می‌شوند. با تلفن=دوستونه کلاس * .poem-stack نیست و جدول دوستونه می‌ماند؛ با تلفن=همیشه همیشه ستونی است. * نکته: سلولِ مصراع flex می‌شود تا ترازِ دوطرفهٔ درون‌خطی کل عرض را نکشد؛ انتخابگرهای td.poem-m1/m2 * عمداً از «.poem-row td» ویژه‌ترند وگرنه display:block آن‌ها را بی‌اثر می‌کرد. */ @media (max-width: 52em) { .poem-stack .poem-table, .poem-stack .poem-table tbody, .poem-stack .poem-row, .poem-stack .poem-row td { display: block; } .poem-stack .poem-sizer { display: none; } .poem-stack .poem-row td { width: auto; text-align: center; } .poem-stack .poem-bayt { display: flex; flex-direction: column; align-items: center; padding: 0.4em 0; border-bottom: 1px dashed rgba(128, 128, 128, 0.55); } .poem-stack .poem-bayt .poem-num-r, .poem-stack .poem-bayt .poem-num-l { order: -1; } .poem-stack .poem-stagger-1 { padding-top: 0.4em; } .poem-stack .poem-stagger-2 { padding-bottom: 0.4em; border-bottom: 1px dashed rgba(128, 128, 128, 0.55); } .poem-stack .poem-row td.poem-m1, .poem-stack .poem-row td.poem-m2 { display: flex; justify-content: center; white-space: normal; word-spacing: normal; } .poem-stack .poem-row td.poem-m1 .beyt, .poem-stack .poem-row td.poem-m2 .beyt { margin-left: auto; margin-right: auto; text-align: center; text-align-last: center; } .poem-stack .poem-sz, .poem-stack .poem-sep { display: none; } } /* فضای نام «صفحه»: همان ستونی‌شدن، بسیار زودتر (متن حدود نیمی از پنجره است) */ @media (max-width: 120em) { .poem-page.poem-stack .poem-table, .poem-page.poem-stack .poem-table tbody, .poem-page.poem-stack .poem-row, .poem-page.poem-stack .poem-row td { display: block; } .poem-page.poem-stack .poem-sizer { display: none; } .poem-page.poem-stack .poem-row td { width: auto; text-align: center; } .poem-page.poem-stack .poem-bayt { display: flex; flex-direction: column; align-items: center; padding: 0.4em 0; border-bottom: 1px dashed rgba(128, 128, 128, 0.55); } .poem-page.poem-stack .poem-bayt .poem-num-r, .poem-page.poem-stack .poem-bayt .poem-num-l { order: -1; } .poem-page.poem-stack .poem-stagger-1 { padding-top: 0.4em; } .poem-page.poem-stack .poem-stagger-2 { padding-bottom: 0.4em; border-bottom: 1px dashed rgba(128, 128, 128, 0.55); } .poem-page.poem-stack .poem-row td.poem-m1, .poem-page.poem-stack .poem-row td.poem-m2 { display: flex; justify-content: center; white-space: normal; word-spacing: normal; } .poem-page.poem-stack .poem-row td.poem-m1 .beyt, .poem-page.poem-stack .poem-row td.poem-m2 .beyt { margin-left: auto; margin-right: auto; text-align: center; text-align-last: center; } .poem-page.poem-stack .poem-sz, .poem-page.poem-stack .poem-sep { display: none; } } /* همیشه ستونی (تلفن=همیشه) */ .poem-stack-always .poem-table, .poem-stack-always .poem-table tbody, .poem-stack-always .poem-row, .poem-stack-always .poem-row td { display: block; } .poem-stack-always .poem-sizer { display: none; } .poem-stack-always .poem-row td { width: auto; text-align: center; } .poem-stack-always .poem-bayt { display: flex; flex-direction: column; align-items: center; padding: 0.4em 0; border-bottom: 1px dashed rgba(128, 128, 128, 0.55); } .poem-stack-always .poem-bayt .poem-num-r, .poem-stack-always .poem-bayt .poem-num-l { order: -1; } .poem-stack-always .poem-stagger-1 { padding-top: 0.4em; } .poem-stack-always .poem-stagger-2 { padding-bottom: 0.4em; border-bottom: 1px dashed rgba(128, 128, 128, 0.55); } .poem-stack-always .poem-row td.poem-m1, .poem-stack-always .poem-row td.poem-m2 { display: flex; justify-content: center; white-space: normal; word-spacing: normal; } .poem-stack-always .poem-row td.poem-m1 .beyt, .poem-stack-always .poem-row td.poem-m2 .beyt { margin-left: auto; margin-right: auto; text-align: center; text-align-last: center; } .poem-stack-always .poem-sz, .poem-stack-always .poem-sep { display: none; } /* صفحهٔ باریک با جدولِ دوستونه (تلفن=دوستونه): فاصله‌ها کمتر تا جا برای متن بماند */ @media (max-width: 30em) { .poem-m { padding-left: 0.25em; padding-right: 0.25em; } .poem-num-c { width: 2.4em; } .poem-g { width: 2em; } .poem-s { width: 2em; } .poem-num-r, .poem-num-l { width: 2.4em; } } k9gh4sgds4gyx2gjoj0amt5ma7g02ls پودمان:شعر 828 97054 305264 305110 2026-10-19T18:23:42Z Hanooz 17889 305264 Scribunto text/plain --[==[ پودمان:شعر — نمایش شعر در ویکی‌نبشتهٔ فارسی الگو نقطهٔ ورود در {{#invoke:شعر|…}} {{شعر}} open آغاز شعر؛ با پارامتر «متن» کل شعر را می‌سازد {{پایان شعر}} close {{بیت}} bayt بیت دومصراعی {{بیت۱}} stagger بیت پلکانی (ضربدری) {{بیت نردبانی}} ladder بیت نردبانی (تورفتگی پیش‌فرض بیشتر) {{مصراع}} mesra یک مصراع {{بیت خالی}} emptyBayt {{مصراع خالی}} emptyMesra ساختار خروجی همان جدول ۷ستونی پیشین است (ظاهر شعرهای موجود و خروجی کتاب الکترونیکی تغییری نمی‌کند). شیوه‌نامه: «الگو:شعر۲/styles.css». چیدمان (تازه): جدول پیش‌فرض عرض ثابت و مستقل از محتوا دارد (عرض=، حداکثر عرض=)، تا همهٔ ابیات شعر — حتی در جدول‌های جدا (صفحه‌های جدا) — از یک نقطه آغاز شوند. ترازبندی=وسط|راست|چپ|پهن|لبه برای هر نوع بیت؛ قلم=، نستعلیق خودبسنده (بدون Common.css). در حالت «متن»، خطی که با @ آغاز شود نوع ردیف‌های بعدی را عوض می‌کند: «@بیت نردبانی». شعر چندصفحه‌ای (ایدهٔ start/end در ppoem): • در فضای نام «صفحه» هر صفحه همیشه خودبسنده و بسته نمایش داده می‌شود. • در صفحهٔ اصلی (درج با <pages/>) پارامتر «ادامه» صفحه‌ها را به هم می‌دوزد: {{شعر|ادامه}} جدول تازه باز نمی‌کند و {{پایان شعر|ادامه}} نمی‌بندد. • ردیفِ ناتمام (مصراعی که در صفحهٔ بعد ادامه دارد) نگه داشته می‌شود (ناتمام=بله) و با نخستین ردیفِ صفحهٔ بعد (دنباله=بله) یکی می‌شود. ]==] local p = {} --------------------------------------------------------------------------- -- تنظیمات --------------------------------------------------------------------------- local ZWNJ = '\226\128\140' -- نیم‌فاصله local cfg = { styles = 'Template:شعر۲/styles.css', -- صفحهٔ TemplateStyles pageNs = 104, -- شمارهٔ فضای نام «صفحه» (ProofreadPage) mesraUnit = '1.5em', -- تورفتگی هر «:» در حالت متن با نوع=مصراع nbsp = '&#160;', -- چیدمان: 'auto' = جدولِ هم‌اندازهٔ محتوا (رفتار قدیمی)؛ طول/درصد = عرض ثابت defaultWidth = '100%', maxWidth = '50em', -- سقف عرض (وقتی عرض داده نشده) -- فاصلهٔ دو مصراع، ستون شمارهٔ کناری و فاصلهٔ شماره تا مصراع در الگو:شعر۲/styles.css است -- ترازبندی پیش‌فرض هر نوع: inner | center | right | left | justify | edge -- inner (میانه): مصراع‌ها به محور میانی می‌چسبند — شیوهٔ گنجور و کتاب‌های کلاسیک -- edge (لبه) : مصراع ۱ به راست، مصراع ۲ به چپ justDefault = { bayt = 'inner', stagger = 'edge' }, -- نستعلیق: خودِ الگوی ویکی ({{نستعلیق|…}}) صدا زده می‌شود و کلاس/قلمی که می‌گذارد روی شعر -- می‌نشیند؛ پس هر تغییر در «الگو:نستعلیق» یا «الگو:نستعلیق/styles.css» خودکار به شعرها می‌رسد. nastaliqTemplate = 'نستعلیق', -- آخرین چاره، فقط اگر آن الگو در دسترس نبود nastaliqFonts = "'IranNastaliq', 'Nastaliq Navees', 'Noto Nastaliq Urdu', 'Jameel Noori Nastaleeq', 'Nafees Nastaleeq', 'Pak Nastaleeq', serif", -- نمادِ میان دو مصراع: separator برای همهٔ شعرها ('' = بدون نماد، یا مثلاً '❖')؛ -- ornament نمادِ «جداکننده=بله» است separator = '', ornament = '❖', -- ترازبندی «پهن»: اگر کوتاه‌ترین مصراعِ بیت کمتر از این نسبتِ طولِ بلندترین باشد، آن بیت -- کشیده نمی‌شود (وسط‌چین می‌ماند) تا فاصلهٔ واژه‌ها بی‌جهت باز نشود justifyMinRatio = 0.7, -- true: ردیف ناتمامِ آخر صفحه نگه داشته و با دنباله‌اش ادغام می‌شود (نیازمند اجرای ترتیبی -- الگوها در یک رندر). اگر متنی در مرز صفحه گم شد، false کنید: هر تکه فوراً و جدا نمایش داده می‌شود. mergeRows = true, cats = { unknown = 'صفحه' .. ZWNJ .. 'های دارای پارامتر ناشناخته در الگوهای شعر', incomplete = 'صفحه' .. ZWNJ .. 'های دارای بیت ناقص', error = 'صفحه' .. ZWNJ .. 'های دارای خطا در پودمان شعر', }, } -- نام پارامترها (فارسی + معادل انگلیسی) local N = { right = { 'ش', 'r', 'right' }, center = { 'شو', 'c', 'center' }, left = { 'شچ', 'l', 'left' }, style = { 'سبک', 'style' }, class = { 'کلاس', 'class' }, id = { 'شناسه', 'id' }, indent = { 'تورفتگی', 'indent' }, align = { 'تراز', 'align' }, height = { 'ارتفاع', 'height' }, lang = { 'زبان', 'lang' }, dir = { 'جهت', 'dir' }, text = { 'متن', 'text' }, kind = { 'نوع', 'type' }, numbering = { 'شماره' .. ZWNJ .. 'گذاری', 'شمارهگذاری', 'شماره', 'numbering' }, start = { 'شروع', 'start' }, side = { 'سمت', 'side' }, digits = { 'ارقام', 'digits' }, gap = { 'فاصله', 'gap' }, unit = { 'واحد تورفتگی', 'واحد' .. ZWNJ .. 'تورفتگی', 'واحدتورفتگی', 'indent-unit' }, nastaliq = { 'نستعلیق', 'nastaliq' }, cont = { 'ادامه', 'continue' }, -- شعر از/به صفحهٔ دیگر ادامه دارد unfinished = { 'ناتمام', 'unfinished' }, -- این ردیف در صفحهٔ بعد ادامه دارد continued = { 'دنباله', 'continued' }, -- این ردیف ادامهٔ ردیف ناتمامِ صفحهٔ قبل است joiner = { 'اتصال', 'join' }, -- چسباندن دو تکه: فاصله | چسبیده | نیم‌فاصله stanza = { 'بند', 'stanza' }, -- بند=جدید width = { 'عرض', 'width' }, maxwidth = { 'حداکثر عرض', 'حداکثر' .. ZWNJ .. 'عرض', 'حداکثرعرض', 'max-width' }, sep = { 'جداکننده', 'separator' }, phone = { 'تلفن', 'phone' }, just = { 'ترازبندی', 'تراز' .. ZWNJ .. 'بندی', 'justify' }, } local KNOWN = {} for _, list in pairs(N) do for _, name in ipairs(list) do KNOWN[name] = true end end local ALIGN = { ['راست'] = 'right', right = 'right', r = 'right', ['چپ'] = 'left', left = 'left', l = 'left', ['وسط'] = 'center', ['مرکز'] = 'center', center = 'center', c = 'center', } local SIDE = { right = 'r', left = 'l', center = 'c' } local KIND = { ['بیت'] = 'bayt', ['ابیات'] = 'bayt', bayt = 'bayt', ['بیت۱'] = 'stagger', ['بیت1'] = 'stagger', ['پلکانی'] = 'stagger', ['ضربدری'] = 'stagger', stagger = 'stagger', ['بیت نردبانی'] = 'ladder', ['نردبانی'] = 'ladder', ladder = 'ladder', ['مصراع'] = 'mesra', ['نو'] = 'mesra', ['نیمایی'] = 'mesra', ['آزاد'] = 'mesra', mesra = 'mesra', line = 'mesra', } local DIGITS = { ['فارسی'] = 'fa', fa = 'fa', persian = 'fa', ['لاتین'] = 'latin', ['انگلیسی'] = 'latin', latin = 'latin', en = 'latin', ['بدون' .. ZWNJ .. 'تغییر'] = 'keep', ['بدون تغییر'] = 'keep', keep = 'keep', } local YES = { ['بله'] = true, ['بلی'] = true, ['آری'] = true, ['خودکار'] = true, yes = true, y = true, auto = true, ['true'] = true, ['1'] = true, } local NO = { ['نه'] = true, ['خیر'] = true, no = true, n = true, ['false'] = true, ['0'] = true, } local UNITS = { [''] = 'px', ['%'] = '%', px = 'px', em = 'em', ex = 'ex', ch = 'ch', rem = 'rem', vw = 'vw', vh = 'vh', pt = 'pt', cm = 'cm', mm = 'mm', ['in'] = 'in', } local CONT = { ['قبل'] = 'prev', ['پیشین'] = 'prev', prev = 'prev', ['بعد'] = 'next', ['پسین'] = 'next', next = 'next', ['هر دو'] = 'both', ['هردو'] = 'both', both = 'both', } local JOIN = { ['فاصله'] = ' ', space = ' ', ['چسبیده'] = '', ['بدون فاصله'] = '', tight = '', ['نیم' .. ZWNJ .. 'فاصله'] = ZWNJ, ['نیمفاصله'] = ZWNJ, ['نیم فاصله'] = ZWNJ, zwnj = ZWNJ, } local WHICH = { ['هر دو'] = 'both', ['هردو'] = 'both', both = 'both', ['اول'] = 'first', first = 'first', ['دوم'] = 'second', second = 'second', } local STANZA = { ['جدید'] = true, new = true } local JUST = { ['وسط'] = 'center', ['مرکز'] = 'center', center = 'center', ['راست'] = 'right', right = 'right', ['چپ'] = 'left', left = 'left', ['پهن'] = 'justify', ['دوطرفه'] = 'justify', ['دو' .. ZWNJ .. 'طرفه'] = 'justify', justify = 'justify', ['لبه'] = 'edge', edge = 'edge', ['میانه'] = 'inner', ['درون'] = 'inner', inner = 'inner', } local ALIGN_CLASS = { right = 'poem-a-right', left = 'poem-a-left' } local JUSTIFY_STYLE = 'text-align:justify;text-align-last:justify' local PHONE = { ['ستونی'] = 'stack', stack = 'stack', ['دوستونه'] = 'two', ['دو ستونه'] = 'two', ['دو' .. ZWNJ .. 'ستونه'] = 'two', two = 'two', ['همیشه'] = 'always', ['همیشه ستونی'] = 'always', always = 'always', } local KIND_KEYS = {} for k in pairs(KIND) do KIND_KEYS[#KIND_KEYS + 1] = k end table.sort(KIND_KEYS, function(a, b) return #a > #b end) local RTL_LANGS = { ar = true, arz = true, azb = true, bgn = true, ckb = true, dv = true, fa = true, glk = true, he = true, ks = true, lrc = true, mzn = true, pnb = true, prs = true, ps = true, sd = true, ug = true, ur = true, yi = true, } -- وضعیتِ میان فراخوانی‌های یک صفحه (هر تجزیه موتور Lua تازه دارد) local state = { ctx = nil, -- شماره‌گذاری و ارقام شعرِ باز open = false, -- آیا شعری باز است؟ (برای دوختن صفحه‌ها در صفحهٔ اصلی) carry = nil, -- ردیف ناتمام در انتظار دنباله: { kind = , d = } } local function defaultCtx() return { digits = 'fa', fixed = (cfg.defaultWidth ~= 'auto'), sep = cfg.separator } end -- ردیف نامرئی: جای خروجی «تهی» تا خط خالی (و در نتیجه <p><br>) پدید نیاید local SKIP = '<tr class="poem-skip"></tr>' local CLOSE_HTML = '</table></div>' --------------------------------------------------------------------------- -- ابزارهای عمومی --------------------------------------------------------------------------- local function esc(s) s = s:gsub('"', '&quot;'):gsub('<', '&lt;'):gsub('>', '&gt;') return s end local function pick(args, names) for _, name in ipairs(names) do local v = args[name] if v and v ~= '' then return v end end return nil end -- آیا یکی از نام‌ها داده شده است (حتی با مقدار تهی)؟ local function present(args, names) for _, name in ipairs(names) do if args[name] ~= nil then return true end end return false end local function bool(v, default) if v == nil then return default end v = v:lower() if YES[v] then return true end if NO[v] then return false end return default end local function addClass(a, b) if not a or a == '' then return b end return a .. ' ' .. b end -- مصراع: یک‌خطی‌کردن و حذف فاصلهٔ اضافه local function clean(s) if not s then return '' end s = mw.text.trim(s) s = s:gsub('%s*\n%s*', ' ') return s end -- آرگومان‌های الگوی فراخوان‌کننده (در صورت نبود، آرگومان‌های #invoke) local function getArgs(frame) local args = {} local function merge(src) if not src then return end for k, v in pairs(src) do if type(v) == 'string' then args[k] = mw.text.trim(v) end end end merge(frame.args) local parent = frame:getParent() if parent then merge(parent.args) end return args end -- آیا پارامتر ناشناخته (یا مصراعِ اضافه) وجود دارد؟ -- اشتباه رایج: وجود «=» در مصراع که آن را به پارامتر نام‌دار تبدیل می‌کند. local function hasUnknown(args, positional) for k, v in pairs(args) do if v ~= '' then if type(k) == 'number' then if k < 1 or k > positional or k % 1 ~= 0 then return true end elseif not KNOWN[k] then return true end end end return false end local function nsId() return mw.title.getCurrentTitle().namespace end -- فضای نام «صفحه»: همیشه خودبسنده نمایش می‌دهیم local function inPageNs() return nsId() == cfg.pageNs end -- ردیابی فقط در اسم‌فضای اصلی و اسم‌فضاهای محتوایی سفارشی (مثل صفحه) local function tracked() local ns = nsId() return ns == 0 or (ns >= 100 and ns % 2 == 0 and ns ~= 828) end local function categories(flags) if not flags or next(flags) == nil or not tracked() then return '' end local out = {} for _, key in ipairs({ 'unknown', 'incomplete', 'error' }) do if flags[key] then out[#out + 1] = '[[رده:' .. cfg.cats[key] .. ']]' end end return table.concat(out) end local function langDir(lang) local base, rest = lang:lower():match('^(%a+)(.*)$') if not base then return nil end if rest:find('latn', 1, true) or rest:find('cyrl', 1, true) then return 'ltr' end if RTL_LANGS[base] or rest:find('arab', 1, true) or rest:find('hebr', 1, true) then return 'rtl' end return 'ltr' end --------------------------------------------------------------------------- -- ارقام --------------------------------------------------------------------------- local FA = { [0] = '۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹' } -- mode: 'fa' (پیش‌فرض) | 'latin' | 'keep' -- اگر مقدار شبیه نشانه‌گذاری (HTML/ویکی) باشد دست نمی‌زنیم. local function convertDigits(s, mode) if s == '' or mode == 'keep' then return s end -- \127 = نشانگر strip (مثل <ref>) که خودش رقم دارد و نباید خراب شود if s:find('[<>{}&=|\127]') or s:find('%[%[') then return s end if mode == 'latin' then s = s:gsub('\217([\160-\169])', function(b) return tostring(b:byte() - 160) end) s = s:gsub('\219([\176-\185])', function(b) return tostring(b:byte() - 176) end) return s end s = s:gsub('%d', function(d) return FA[tonumber(d)] end) s = s:gsub('\217([\160-\169])', function(b) return FA[b:byte() - 160] end) return s end local function numberArg(args, names, digits) local v = pick(args, names) if not v then return '' end return convertDigits(v, digits) end -- عدد صحیح در بازهٔ [lo, hi] یا nil (از inf و nan و اعداد غول‌آسا جلوگیری می‌کند) local function intArg(v, lo, hi) local n = tonumber((convertDigits(v, 'latin'))) if not n or n ~= n or n < lo or n > hi then return nil end return math.floor(n) end --------------------------------------------------------------------------- -- اندازه‌های CSS --------------------------------------------------------------------------- local function splitLength(v) if not v or v == '' then return nil end v = convertDigits(v, 'latin') v = v:gsub('٪', '%%'):gsub('٫', '.') local num, unit = v:match('^(%d*%.?%d+)%s*([%a%%]*)$') if not num then return nil end num = tonumber(num) if not num or num > 10000 then return nil end unit = UNITS[unit:lower()] if not unit then return nil end return num, unit end local function parseLength(v) local num, unit = splitLength(v) if not num then return nil end return string.format('%g', num) .. unit end --------------------------------------------------------------------------- -- شماره‌گذاری خودکار --------------------------------------------------------------------------- local function newCtx(args, kind, flags) local ctx = { digits = 'fa', count = 0, start = 1, side = 'l', mesra = (kind == 'mesra') } local d = pick(args, N.digits) if d then ctx.digits = DIGITS[d:lower()] if not ctx.digits then ctx.digits = 'fa'; flags.unknown = true end end local s = pick(args, N.start) if s then local n = intArg(s, -1e9, 1e9) if n then ctx.start = n else flags.unknown = true end end local sd = pick(args, N.side) if sd then local a = ALIGN[sd:lower()] if a then ctx.side = SIDE[a] else flags.unknown = true end end local m = pick(args, N.numbering) if m then local n = intArg(m, 0, 1e6) if n then if n >= 1 then ctx.every = n end -- ۰ یعنی خاموش else local b = bool(m, nil) if b == true then ctx.every = 1 elseif b == nil then flags.unknown = true end end end return ctx end -- شمارهٔ بعدی (یا nil اگر شماره‌گذاری خاموش است یا نوبت نمایش نیست) local function nextNumber(ctx) if not ctx.every then return nil end local n = ctx.start + ctx.count ctx.count = ctx.count + 1 if n % ctx.every ~= 0 then return nil end return convertDigits(string.format('%d', n), ctx.digits) end -- counted: آیا این ردیف در شماره‌گذاری شمرده شود؟ noCenter: ردیف «وسط» ندارد local function applyAuto(d, ctx, counted, noCenter) if not counted then return end local n = nextNumber(ctx) if not n then return end if d.r ~= '' or d.c ~= '' or d.l ~= '' then return end -- شمارهٔ دستی مقدم است local side = ctx.side if noCenter and side == 'c' then side = 'l' end d[side] = n end --------------------------------------------------------------------------- -- ساخت HTML --------------------------------------------------------------------------- -- چند تکه استایل را با «;» به هم می‌چسباند local function joinStyle(...) local parts = {} for i = 1, select('#', ...) do local v = select(i, ...) if v and v ~= '' then parts[#parts + 1] = (v:gsub(';%s*$', '')) end end return table.concat(parts, ';') end -- کلاس ترازِ مصراعِ which (۱ یا ۲) برای ترازبندی j. وسط = پیش‌فرض شیوه‌نامه؛ پهن = استایل -- درون‌خطی (JUSTIFY_STYLE). ترازها کلاس‌اند تا در صفحهٔ باریک (تلفن) بتوان آن‌ها را وسط‌چین کرد. local function alignClass(j, which) if j == 'justify' then return 'poem-a-justify' end if not j or j == 'center' then return nil end if j == 'edge' then return (which == 1) and 'poem-a-start' or 'poem-a-end' end if j == 'inner' then return (which == 1) and 'poem-a-end' or 'poem-a-start' end return ALIGN_CLASS[j] end local function withClass(base, extra) if extra then return base .. ' ' .. extra end return base end -- شمار تقریبی نویسه‌های دیدنیِ یک مصراع (بدون نشانه‌گذاری و نشانگرهای strip) local function charLen(s) s = s:gsub('\127[^\127]*\127', ''):gsub('<[^>]*>', ''):gsub('%[%[[^%]|]*|', ''):gsub('[%[%]]', '') return #(s:gsub('[\128-\191]', '')) end -- «پهن» فقط وقتی که دو مصراع هم‌اندازه‌اند؛ وگرنه کشش زیاد می‌شود ← وسط‌چین local function effectiveJust(j, a, b) if j == 'justify' then local la, lb = charLen(a), charLen(b) local hi = math.max(la, lb) if hi > 0 and math.min(la, lb) / hi < cfg.justifyMinRatio then return 'center' end end return j end local function td(class, colspan, style, content) local s = '<td class="' .. class .. '"' if colspan and colspan > 1 then s = s .. ' colspan="' .. colspan .. '"' end if style and style ~= '' then s = s .. ' style="' .. esc(style) .. '"' end return s .. '>' .. (content or '') .. '</td>' end -- <ref> در پایان مصراع: نشانگر strip (\127'"`UNIQ--ref-…-QINU`"'\127) را جدا می‌کنیم تا در عرض و -- کشش مصراع نشمارد؛ نشانه بعد از پایان مصراع می‌آید (در .poem-ref با عرض صفر آویزان می‌شود) local REF_END = '(\127\'"`UNIQ%-%-ref%-%x+%-QINU`"\'\127)%s*$' local function splitRefs(text) local refs = '' while true do local main, mark = text:match('^(.-)' .. REF_END) if not mark then break end refs = mark .. refs text = main end if refs == '' then return text, '' end return (text:gsub('%s+$', '')), refs end -- متنِ ساده (برای نسخهٔ نامرئیِ اندازه‌گیر): بدون نشانه‌گذاری، پیوند و نشانگرهای strip local function plainText(s) s = s:gsub('\127[^\127]*\127', ''):gsub('<[^>]*>', ''):gsub('%[%[[^%]|]*|', ''):gsub('[%[%]]', ''):gsub("''+", '') return (s:gsub('%s+', ' ')) end -- other: مصراعِ هم‌بیت (فقط در شعر دوطرفه). نسخهٔ نامرئیِ آن در همین سلول می‌نشیند تا عرضِ هر دو ستون -- برابرِ بلندترین مصراعِ کل شعر شود (همهٔ مصراع‌ها هم‌اندازه؛ هر کدام تا بلندترین کشیده می‌شود). local function hemi(text, other) local main, refs = splitRefs(text) local h = '<span class="beyt">' .. main if refs ~= '' then h = h .. '<span class="poem-ref">' .. refs .. '</span>' end h = h .. '</span>' if other and other ~= '' then local t = plainText((splitRefs(other))) if t ~= '' and t ~= ' ' then h = h .. '<span class="poem-sz">' .. esc(t) .. '</span>' end end return h end local function rowOpen(d, kind, noId) local cls = 'poem-row ' .. kind if d.class then cls = cls .. ' ' .. d.class end local id = '' if d.id and not noId then id = ' id="' .. esc(d.id) .. '"' end return '<tr class="' .. esc(cls) .. '"' .. id .. '>' end -- {{بیت}} local function rowBayt(d) local m1 = d.m1 if m1 == '' and d.m2 == '' then m1 = cfg.nbsp end -- ردیف خالی ارتفاع خط را حفظ کند local j = effectiveJust(d.just or cfg.justDefault.bayt, d.m1, d.m2) local js = (j == 'justify') and JUSTIFY_STYLE or nil local sz = (j == 'justify') local mid = d.c if mid == '' and d.sep and d.sep ~= '' then mid = '<span class="poem-sep">' .. d.sep .. '</span>' -- نمادِ میان دو مصراع (اگر شمارهٔ میانی نیست) end return rowOpen(d, 'poem-bayt') .. td('poem-num poem-num-r', 1, nil, d.r) .. td(withClass('b poem-m poem-m1', alignClass(j, 1)), 2, joinStyle(js, d.style), hemi(m1, sz and d.m2 or nil)) .. td('poem-num poem-num-c', 1, d.style, mid) .. td(withClass('b poem-m poem-m2', alignClass(j, 2)), 2, joinStyle(js, d.style), hemi(d.m2, sz and d.m1 or nil)) .. td('poem-num poem-num-l', 1, nil, d.l) .. '</tr>' end -- پهنای جعبهٔ هر خط در بیت پلکانی با چیدمان ثابت: ۱۰۰٪ منهای تورفتگی local function boxWidth(indent) local num, unit = indent:match('^([%d%.]+)(.*)$') if unit == '%' then return string.format('%g%%', math.max(100 - tonumber(num), 10)) end return 'calc(100% - ' .. indent .. ')' end -- {{بیت۱}} و {{بیت نردبانی}} local function rowStagger(d) local m1 = d.m1 if m1 == '' and d.m2 == '' then m1 = cfg.nbsp end local j = d.just or cfg.justDefault.stagger -- پلکانی: «پهن» یعنی همهٔ خط‌ها تا بلندترین مصراع (بدون استثنای نسبت) local js = (j == 'justify') and JUSTIFY_STYLE or nil local sz = (j == 'justify') local h1 = sz and d.m2 or nil local h2 = sz and d.m1 or nil local s1, s2 = joinStyle(js, d.style), joinStyle(js, d.style) local c1, c2 = withClass('b poem-m poem-m1', alignClass(j, 1)), withClass('b poem-m poem-m2', alignClass(j, 2)) if not d.indent then -- پیش‌فرض: مصراع ۱ در ستونِ راست (ستون‌های ۲–۳) و مصراع ۲ در ستونِ چپ (۵–۶) — دقیقاً هم‌اندازهٔ -- مصراع‌های بیت؛ مصراع ۱ راست‌چین، مصراع ۲ چپ‌چین (ترازبندی=لبه). «تورفتگی» صریح → چیدمان قدیمی. return rowOpen(d, 'poem-stagger poem-stagger-1') .. td('poem-num poem-num-r', 1, nil, d.r) .. td(c1, 2, s1, hemi(m1, h1)) .. td('poem-indent', 3, nil, '') .. td('poem-num poem-num-l', 1, nil, '') .. '</tr>\n' .. rowOpen(d, 'poem-stagger poem-stagger-2', true) .. td('poem-num poem-num-r', 1, nil, '') .. td('poem-indent', 3, nil, '') .. td(c2, 2, s2, hemi(d.m2, h2)) .. td('poem-num poem-num-l', 1, nil, d.l) .. '</tr>' end if d.fixed then -- چیدمان ثابت: هر خط جعبه‌ای با پهنای درصدی در سلولِ ۵ستونه؛ جعبهٔ اول به آغاز، دوم به پایان می‌چسبد local bw = boxWidth(d.indent) return rowOpen(d, 'poem-stagger poem-stagger-1') .. td('poem-num poem-num-r', 1, nil, d.r) .. td(c1, 5, s1, '<div class="poem-st" style="width:' .. bw .. ';margin-inline-end:auto">' .. hemi(m1, h1) .. '</div>') .. td('poem-num', 1, nil, '') .. '</tr>\n' .. rowOpen(d, 'poem-stagger poem-stagger-2', true) .. td('poem-num', 1, nil, '') .. td(c2, 5, s2, '<div class="poem-st" style="width:' .. bw .. ';margin-inline-start:auto">' .. hemi(d.m2, h2) .. '</div>') .. td('poem-num poem-num-l', 1, nil, d.l) .. '</tr>' end local sp = 'width:' .. d.indent return rowOpen(d, 'poem-stagger poem-stagger-1') .. td('poem-num poem-num-r', 1, nil, d.r) .. td(c1, 3, s1, hemi(m1, h1)) .. td('poem-indent', 2, sp, '') .. td('poem-num', 1, nil, '') .. '</tr>\n' .. rowOpen(d, 'poem-stagger poem-stagger-2', true) .. td('poem-num', 1, nil, '') .. td('poem-indent', 2, sp, '') .. td(c2, 3, s2, hemi(d.m2, h2)) .. td('poem-num poem-num-l', 1, nil, d.l) .. '</tr>' end -- {{مصراع}} local function rowMesra(d) local align = d.align or 'center' local content = d.text if d.blank and content == '' then content = cfg.nbsp end local mainText, refs = splitRefs(content) if refs ~= '' then content = mainText .. '<span class="poem-ref">' .. refs .. '</span>' end local style = d.style or '' local cellClass = 'b poem-m' local cs = { 2, 3, 2 } if align ~= 'center' then cs = { 1, 5, 1 } cellClass = cellClass .. ' poem-m-' .. align if d.indent then style = 'padding-' .. align .. ':' .. d.indent .. ';' .. style end end return rowOpen(d, 'poem-mesra') .. td('poem-num poem-num-r', cs[1], nil, d.r) .. td(cellClass, cs[2], style, content) .. td('poem-num poem-num-l', cs[3], nil, d.l) .. '</tr>' end -- ردیف فاصله با ارتفاع دلخواه (یا یک خط خالی) local function rowGap(d) local style = d.height and ('height:' .. d.height) or nil local content = d.height and '' or cfg.nbsp return '<tr class="poem-row poem-gap' .. (d.class and (' ' .. esc(d.class)) or '') .. '">' .. td('poem-gapcell', 7, style, content) .. '</tr>' end local RENDER = { bayt = rowBayt, stagger = rowStagger, mesra = rowMesra } -- ردیف نامرئی نخست در چیدمان ثابت: پهنای ستون‌ها را مستقل از محتوا تعیین می‌کند local function sizerRow() return '<tr class="poem-sizer">' .. '<td class="poem-s"></td><td></td><td></td>' .. '<td class="poem-g"></td><td></td><td></td>' .. '<td class="poem-s"></td></tr>' end local function openHtml(o) local look = o.look -- نمای نستعلیق (کلاس و قلمِ الگوی ویکی) local cls = 'poem' .. (o.fixed and ' poem-fixed' or '') .. (o.stack and ' poem-stack' or '') .. (o.just == 'justify' and ' poem-just' or '') .. (o.page and ' poem-page' or '') .. (o.always and ' poem-stack-always' or '') if look and look.class then cls = cls .. ' ' .. look.class end if o.class then cls = cls .. ' ' .. o.class end local div = '<div class="' .. esc(cls) .. '"' if o.lang then div = div .. ' lang="' .. o.lang .. '"' end if o.dir then div = div .. ' dir="' .. o.dir .. '"' end local font = look and look.style or nil local tcls = 'poem-table' .. (o.nastaliq and ' nastaliq' or '') if o.fixed then -- عرض و قلم و سبک کاربر روی جعبهٔ بیرونی؛ جدول همیشه ۱۰۰٪ آن و با ستون‌های ثابت local wrap = joinStyle('width:' .. o.width, 'max-width:' .. o.maxWidth, 'margin:0 auto', font, o.style) return div .. ' style="' .. esc(wrap) .. '"><table class="' .. tcls .. '" role="presentation" style="width:100%;table-layout:fixed">' .. sizerRow() end -- چیدمان خودکار (قدیمی): همان بایت‌به‌بایتِ پیشین وقتی قلم/سبک نیست local style = 'margin: 0 auto;' if font then style = style .. font .. ';' end if o.style then style = style .. ' ' .. o.style end return div .. '><table class="' .. tcls .. '" role="presentation" style="' .. esc(style) .. '">' end --------------------------------------------------------------------------- -- شعر چندصفحه‌ای: نگه‌داشتن ردیف ناتمام و یکی‌کردن آن با دنباله‌اش --------------------------------------------------------------------------- local function joinText(a, b, sep) if a == '' then return b end if b == '' then return a end return a .. sep .. b end -- tail را در head (ردیف ناتمام) ادغام می‌کند: متن مصراع‌ها پشت هم، شماره‌ها از tail local function mergeRow(head, tail, sep) for _, f in ipairs({ 'm1', 'm2', 'text' }) do if head[f] ~= nil or tail[f] ~= nil then head[f] = joinText(head[f] or '', tail[f] or '', sep) end end for _, f in ipairs({ 'r', 'c', 'l' }) do if tail[f] and tail[f] ~= '' then head[f] = tail[f] end end head.style = head.style or tail.style head.class = head.class or tail.class head.id = head.id or tail.id return head end -- ردیفِ نگه‌داشته‌شده را (اگر باشد) به‌صورت HTML بیرون می‌دهد local function flushHtml() local c = state.carry if not c then return '' end state.carry = nil return RENDER[c.kind](c.d) end -- ردیف‌های بدون منطق ادامه (فاصله، خالی): ردیف ناتمامِ جاافتاده را هم بیرون می‌ریزد local function plain(html) if not inPageNs() then local pre = flushHtml() if pre ~= '' then return pre .. '\n' .. html end end return html end --[[ یک ردیف را خروجی می‌دهد. فضای نام «صفحه»: همان‌جا و کامل (فقط کلاس‌های ناتمام/دنباله برای نشان‌دادن). جاهای دیگر (صفحهٔ اصلی، درج صفحه‌ها): ردیف ناتمام نگه داشته می‌شود و با نخستین ردیفِ دارای «دنباله» یکی می‌شود. opt: unfinished, continued, joiner ]] local function emit(kind, d, opt, flags) opt = opt or {} if inPageNs() then if opt.unfinished then d.class = addClass(d.class, 'poem-partial-end') end if opt.continued then d.class = addClass(d.class, 'poem-partial-start') end return RENDER[kind](d) end if not cfg.mergeRows then return RENDER[kind](d) end -- بدون ادغام: هر تکه فوراً و جدا local out = '' local carry = state.carry state.carry = nil if carry then if opt.continued and carry.kind == kind then d = mergeRow(carry.d, d, opt.joiner or ' ') else out = RENDER[carry.kind](carry.d) -- دنباله‌ای نیامد: همان‌طور که هست if opt.continued then flags.unknown = true end -- نوع ردیف‌ها نمی‌خواند end end if opt.unfinished then state.carry = { kind = kind, d = d } return out ~= '' and out or SKIP end local html = RENDER[kind](d) if out ~= '' then return out .. '\n' .. html end return html end --------------------------------------------------------------------------- -- خواندن پارامترها --------------------------------------------------------------------------- -- ناتمام / دنباله / اتصال local function rowOpts(args, flags) local opt = {} local u = pick(args, N.unfinished) if u then local b = bool(u, nil) if b == nil then flags.unknown = true else opt.unfinished = b end end local c = pick(args, N.continued) if c then local w = WHICH[c:lower()] if w then opt.continued, opt.which = true, w else local b = bool(c, nil) if b == nil then flags.unknown = true else opt.continued = b end end end local j = pick(args, N.joiner) if j then opt.joiner = JOIN[j:lower()] if opt.joiner == nil then flags.unknown = true end end return opt end -- جداکننده: نه | بله (نماد پیش‌فرض) | یک نماد کوتاه (مثل ✤) local function parseSep(v, flags) local lv = v:lower() if lv == 'نه' or lv == 'خیر' or lv == 'بدون' or lv == 'ندارد' or lv == 'no' then return '' end if lv == 'بله' or lv == 'خودکار' or lv == 'yes' or lv == 'auto' then return cfg.ornament end if #v <= 24 and not v:find('[<>{}|%[%]"\n]') then return v end flags.unknown = true return cfg.separator end local function parseOpen(args, flags) local o = {} local isText = present(args, N.text) -- پارامترهای بدون نام: نستعلیق، ادامه for i = 1, 2 do local v = args[i] if v and v ~= '' then local lv = v:lower() if v == 'نستعلیق' or lv == 'nastaliq' then o.nastaliq = true elseif v == 'ادامه' or lv == 'continue' then if isText then flags.unknown = true else o.cont = 'prev' end else flags.unknown = true end end end if not o.nastaliq then o.nastaliq = bool(pick(args, N.nastaliq), false) end -- ادامه از/به صفحهٔ دیگر local c = pick(args, N.cont) if c then local k = CONT[c:lower()] if k then if not isText and k == 'next' then flags.unknown = true; k = nil end -- «به بعد» را در {{پایان شعر}} بنویسید else local b = bool(c, nil) if b == nil then flags.unknown = true elseif b then if isText then flags.unknown = true else k = 'prev' end end end if k then o.cont = k end end o.style = pick(args, N.style) o.class = pick(args, N.class) local lang = pick(args, N.lang) if lang then if lang:match('^%a[%w%-]*$') then o.lang = lang else flags.unknown = true end end local dir = pick(args, N.dir) if dir then dir = dir:lower() if dir == 'rtl' or dir == 'ltr' then o.dir = dir else flags.unknown = true end end if o.lang and not o.dir then o.dir = langDir(o.lang) end o.kind = 'bayt' local k = pick(args, N.kind) if k then o.kind = KIND[k:lower()] if not o.kind then o.kind = 'bayt'; flags.unknown = true end end local a = pick(args, N.align) if a then o.align = ALIGN[a:lower()] if not o.align then flags.unknown = true end end local g = pick(args, N.gap) if g then o.gap = parseLength(g) if not o.gap then flags.unknown = true end end local ind = pick(args, N.indent) if ind then o.indent = parseLength(ind) if not o.indent then flags.unknown = true end end o.unitNum, o.unitUnit = splitLength(pick(args, N.unit)) if not o.unitNum then o.unitNum, o.unitUnit = splitLength(cfg.mesraUnit) if pick(args, N.unit) then flags.unknown = true end end local st = pick(args, N.stanza) if st then if STANZA[st:lower()] then o.newStanza = true else flags.unknown = true end end -- ترازبندی (همهٔ ابیات) local jv = pick(args, N.just) if jv then o.just = JUST[jv:lower()] if not o.just then flags.unknown = true end end -- جداکننده (نماد میان دو مصراع) local sv = pick(args, N.sep) if sv then o.sep = parseSep(sv, flags) else o.sep = cfg.separator end -- تلفن (صفحهٔ باریک): ستونی (پیش‌فرض: عدد، دو مصراع زیر هم) یا دوستونه local stack = true local ph = pick(args, N.phone) if ph then local m = PHONE[ph:lower()] if m == 'two' then stack = false elseif m == 'always' then o.always = true elseif not m then flags.unknown = true end end o.stack = stack -- شعر دوطرفه هم در صفحهٔ بسیار باریک ستونی می‌شود -- چیدمان: عرض ثابت (پیش‌فرض) یا «خودکار» = هم‌اندازهٔ محتوا local w = pick(args, N.width) if w then local lw = w:lower() if lw == 'خودکار' or lw == 'auto' then o.fixed = false else o.width = parseLength(w) if o.width then o.fixed = true else flags.unknown = true end end end local mx = pick(args, N.maxwidth) if mx then local lm = mx:lower() if lm == 'none' or lm == 'بدون' or lm == 'نامحدود' then o.maxWidth = 'none' else o.maxWidth = parseLength(mx) if not o.maxWidth then flags.unknown = true end end end if o.fixed == nil then -- «پهن» (دوطرفه): ستون‌ها به اندازهٔ بلندترین مصراع می‌شوند تا کمترین کشش لازم باشد؛ -- با دادن «عرض» همان عرضِ ثابت اعمال می‌شود o.fixed = (cfg.defaultWidth ~= 'auto') and (o.just ~= 'justify') end if o.fixed then local explicit = (o.width ~= nil) o.width = o.width or cfg.defaultWidth o.maxWidth = o.maxWidth or (explicit and '100%' or cfg.maxWidth) end return o end -- ادامهٔ شعر در صفحهٔ بعد؟ {{پایان شعر|ادامه}} یا ادامه=بعد local function parseClose(args, flags) local cont = false local v = args[1] if v and v ~= '' then if v == 'ادامه' or v:lower() == 'continue' then cont = true else flags.unknown = true end end local c = pick(args, N.cont) if c then local k = CONT[c:lower()] if k == 'next' or k == 'both' then cont = true elseif k == 'prev' then flags.unknown = true -- «از قبل» را در {{شعر}} بنویسید else local b = bool(c, nil) if b == nil then flags.unknown = true elseif b then cont = true end end end return cont end --------------------------------------------------------------------------- -- حالت «متن»: ساخت کل شعر از خط‌های ساده --------------------------------------------------------------------------- --[[ نشانه‌های درون‌خطی (به الگوی ppoem): ‎>> متن‎ مصراع راست‌چین ‎<> متن‎ مصراع وسط‌چین ‎۱۲ <<< متن‎ شمارهٔ سمت راست (ش) ‎متن >>> ۱۲‎ شمارهٔ سمت چپ (شچ) ‎:: متن‎ (نوع=مصراع) تورفتگی ]] local function parseLine(raw, freeVerse) local t = {} local s = raw if freeVerse then t.level = #s:match('^:*') s = s:sub(t.level + 1) end if s:sub(1, 2) == '<>' then t.align = 'center' s = s:sub(3) elseif s:sub(1, 2) == '>>' and s:sub(3, 3) ~= '>' then t.align = 'right' s = s:sub(3) end s = mw.text.trim(s) local pre, rest = s:match('^(.-)%s*<<<%s*(.*)$') if pre then t.pre = pre s = rest end local body, post = s:match('^(.-)%s*>>>%s*(.+)$') if body then t.post = post s = body end t.text = s return t end -- «@بیت نردبانی تورفتگی=30%» ← { kind = 'ladder', indent = '30%' }؛ پارامتر دوم: گزینهٔ نامعتبر داشت local function parseDirective(line) local rest = mw.text.trim(line:sub(2)) local lrest = rest:lower() for _, key in ipairs(KIND_KEYS) do if lrest:sub(1, #key) == key then local after = rest:sub(#key + 1) if after == '' or after:match('^%s') then local dd, bad = { kind = KIND[key] }, false for k, v in after:gmatch('(%S+)=(%S+)') do local kk, lv = k:lower(), v:lower() if kk == 'تورفتگی' or kk == 'indent' then dd.indent = parseLength(v) if not dd.indent then bad = true end elseif kk == 'تراز' or kk == 'align' then dd.align = ALIGN[lv] if not dd.align then bad = true end elseif kk == 'ترازبندی' or kk == 'justify' then dd.just = JUST[lv] if not dd.just then bad = true end else bad = true end end return dd, bad end end end return nil, true end local function renderLines(text, o, ctx, ropt, flags) -- وضعیت جاری: نوع ردیف و گزینه‌هایش؛ خط «@…» آن را عوض می‌کند local cur = { kind = o.kind, indent = o.indent, align = o.align, just = o.just } local items, pending, pendingCur, needGap = {}, nil, nil, false local function info(c) local twoH = (c.kind ~= 'mesra') local rowKind = (c.kind == 'mesra') and 'mesra' or ((c.kind == 'bayt') and 'bayt' or 'stagger') local indent if c.kind == 'stagger' or c.kind == 'ladder' then indent = c.indent end -- فقط وقتی صریحاً داده شده return twoH, rowKind, indent end local function numbers(d, t) if not t then return end if t.pre and t.pre ~= '' and d.r == '' then d.r = convertDigits(t.pre, ctx.digits) end if t.post and t.post ~= '' and d.l == '' then d.l = convertDigits(t.post, ctx.digits) end end local function makeBayt(t1, t2, c) local _, _, indent = info(c) local d = { m1 = t1 and clean(t1.text) or '', m2 = t2 and clean(t2.text) or '', r = '', c = '', l = '', indent = indent, fixed = ctx.fixed, just = c.just, sep = ctx.sep } numbers(d, t1) numbers(d, t2) return d end local function makeMesra(t, c, free) local d = { text = clean(t.text), r = '', c = '', l = '', fixed = ctx.fixed } d.align = t.align or c.align or (free and 'right' or 'center') if free and (t.level or 0) > 0 and d.align ~= 'center' then d.indent = string.format('%g', o.unitNum * t.level) .. o.unitUnit end numbers(d, t) return d end local function push(kind, d, counted) items[#items + 1] = { kind = kind, d = d, counted = counted, gap = needGap and #items > 0 } needGap = false end local function flushPending() if pending then push('mesra', makeMesra(pending, pendingCur, false), false) -- مصراع تنها: وسط‌چین، بی‌شمارش pending = nil end end -- ۱) خط به خط local src = text:gsub('\r\n?', '\n') for raw in (src .. '\n'):gmatch('([^\n]*)\n') do local line = mw.text.trim(raw) if line == '' then flushPending() if #items > 0 then needGap = true end elseif line:sub(1, 1) == '@' then local dd, bad = parseDirective(line) flushPending() if dd then cur = { kind = dd.kind, indent = dd.indent or o.indent, align = dd.align or o.align, just = dd.just or o.just } end if bad then flags.unknown = true end else local twoH, rowKind = info(cur) local isFirst = (#items == 0 and not pending) local t = parseLine(line, not twoH) if not twoH then push('mesra', makeMesra(t, cur, true), ctx.mesra) -- مصراع‌های نوع «مصراع» فقط در شعرِ نوع=مصراع شمرده می‌شوند else local handled = false if ropt.continued and isFirst then -- ادامهٔ ردیفِ ناتمام: کدام مصراع(ها) در این صفحه ادامه دارند؟ local mode = ropt.which or 'auto' if mode == 'auto' then local c = state.carry mode = (c and c.kind ~= 'mesra' and (c.d.m2 or '') == '') and 'second' or 'both' end if mode == 'first' then push(rowKind, makeBayt(t, nil, cur), true); handled = true elseif mode == 'second' then push(rowKind, makeBayt(nil, t, cur), true); handled = true end end if not handled then if pending then push(rowKind, makeBayt(pending, t, pendingCur), true) pending = nil else pending, pendingCur = t, cur end end end end end if pending then local _, rowKind = info(pendingCur) if ropt.unfinished then push(rowKind, makeBayt(pending, nil, pendingCur), true) -- بیتِ ناتمام: مصراع دوم در صفحهٔ بعد else push('mesra', makeMesra(pending, pendingCur, false), false) end pending = nil end -- ۲) شماره‌گذاری (ردیفِ ادامه را دوباره نمی‌شماریم) for i, it in ipairs(items) do if it.counted and not (i == 1 and ropt.continued) then applyAuto(it.d, ctx, true, it.kind ~= 'bayt') end end -- ۳) خروجی local out = {} for i, it in ipairs(items) do if it.gap then out[#out + 1] = plain(rowGap({ height = o.gap })) end local ro = {} if i == 1 and ropt.continued then ro.continued, ro.joiner = true, ropt.joiner end if i == #items and ropt.unfinished then ro.unfinished = true end local h = emit(it.kind, it.d, ro, flags) if h ~= SKIP and h ~= '' then out[#out + 1] = h end end return table.concat(out, '\n') end --------------------------------------------------------------------------- -- نقطه‌های ورود --------------------------------------------------------------------------- -- نمای نستعلیق از روی خودِ الگوی ویکی: {{نستعلیق|x}} را بسط می‌دهد و از خروجی‌اش نشانگر -- شیوه‌نامه، کلاس و (فقط) استایل‌های قلم را برمی‌دارد. اگر الگو نبود، فهرست قلمِ cfg. local FONT_PROPS = { ['font-family'] = true, ['font-size'] = true, ['font-style'] = true, ['font-weight'] = true, ['font-variant'] = true, ['font'] = true, ['line-height'] = true, ['letter-spacing'] = true, ['word-spacing'] = true, ['text-rendering'] = true, ['font-feature-settings'] = true, } local function nastaliqLook(frame) local ok, res = pcall(function() return frame:expandTemplate{ title = cfg.nastaliqTemplate, args = { 'x' } } end) if ok and type(res) == 'string' then local prefix = mw.text.trim(res:match('^(.-)<%a') or '') local attrs = res:match('<%a+([^>]*)>') if attrs then local cls = attrs:match('class%s*=%s*"([^"]*)"') or attrs:match("class%s*=%s*'([^']*)'") local sty = attrs:match('style%s*=%s*"([^"]*)"') or attrs:match("style%s*=%s*'([^']*)'") if cls then cls = mw.text.trim((cls:gsub('[^%w%s_%-\128-\255]', ''))) end local keep = {} for decl in (sty or ''):gmatch('[^;]+') do local prop = mw.text.trim(decl:match('^([^:]+):') or ''):lower() if FONT_PROPS[prop] then keep[#keep + 1] = mw.text.trim(decl) end end if (cls and cls ~= '') or #keep > 0 or prefix ~= '' then return { prefix = prefix, class = (cls and cls ~= '') and cls or 'nastaliq', style = (#keep > 0) and table.concat(keep, ';') or nil, } end end end return { prefix = '', class = 'nastaliq', style = 'font-family:' .. cfg.nastaliqFonts } end local function open(frame) local args, flags = getArgs(frame), {} local o = parseOpen(args, flags) local isText = present(args, N.text) local page = inPageNs() if hasUnknown(args, 2) then flags.unknown = true end -- صفحهٔ اصلی: اگر شعری باز است و این صفحه ادامهٔ آن است، جدول تازه باز نمی‌کنیم o.page = page -- در فضای نام «صفحه» تصویر کنار متن است: فشرده‌تر و زودتر ستونی local joins = (not page) and state.open and (o.cont == 'prev' or o.cont == 'both') local ctx if joins and state.ctx then ctx = state.ctx else ctx = newCtx(args, o.kind, flags) ctx.fixed, ctx.just, ctx.sep = o.fixed, o.just, o.sep end local parts = {} if not joins then if o.nastaliq then o.look = nastaliqLook(frame) end parts[#parts + 1] = frame:extensionTag{ name = 'templatestyles', args = { src = cfg.styles } } .. ((o.look and o.look.prefix) or '') .. openHtml(o) state.carry = nil end state.open, state.ctx = true, ctx if isText then -- کل شعر در یک فراخوانی؛ نیازی به {{پایان شعر}} نیست local ropt = rowOpts(args, flags) if o.newStanza and joins and not ropt.continued then parts[#parts + 1] = plain(rowGap({ height = o.gap })) end local rows = renderLines(pick(args, N.text) or '', o, ctx, ropt, flags) if rows ~= '' then parts[#parts + 1] = rows end local stay = (not page) and (o.cont == 'next' or o.cont == 'both') if not stay then local tail = flushHtml() if tail ~= '' then parts[#parts + 1] = tail end parts[#parts + 1] = CLOSE_HTML state.open, state.ctx = false, nil end end if #parts == 0 then parts[1] = SKIP end return table.concat(parts, '\n') .. categories(flags) end local function close(frame) local args, flags = getArgs(frame), {} local cont = parseClose(args, flags) if hasUnknown(args, 1) then flags.unknown = true end if cont and not inPageNs() then -- شعر در صفحهٔ بعد ادامه دارد: نبندیم (ردیف ناتمام هم نگه داشته می‌ماند) return SKIP .. categories(flags) end local html = flushHtml() state.open, state.ctx = false, nil if html ~= '' then html = html .. '\n' end return html .. CLOSE_HTML .. categories(flags) end local function commonRow(args, ctx, flags) local d = { r = numberArg(args, N.right, ctx.digits), c = numberArg(args, N.center, ctx.digits), l = numberArg(args, N.left, ctx.digits), style = pick(args, N.style), class = pick(args, N.class), id = pick(args, N.id), fixed = ctx.fixed, just = ctx.just, sep = ctx.sep, } local sv = pick(args, N.sep) if sv then d.sep = parseSep(sv, flags) end local jv = pick(args, N.just) if jv then d.just = JUST[jv:lower()] if not d.just then flags.unknown = true; d.just = ctx.just end end return d end local function bayt(frame) local args = getArgs(frame) local ctx = state.ctx or defaultCtx() local flags = {} local opt = rowOpts(args, flags) local d = commonRow(args, ctx, flags) d.m1, d.m2 = clean(args[1]), clean(args[2]) if (d.m1 == '') ~= (d.m2 == '') and not opt.unfinished and not opt.continued then flags.incomplete = true end if hasUnknown(args, 2) then flags.unknown = true end applyAuto(d, ctx, not opt.continued, false) local html = emit('bayt', d, opt, flags) return html .. categories(flags) end local function staggerFn() return function(frame) local args = getArgs(frame) local ctx = state.ctx or defaultCtx() local flags = {} local opt = rowOpts(args, flags) local d = commonRow(args, ctx, flags) d.m1, d.m2 = clean(args[1]), clean(args[2]) if (d.m1 == '') ~= (d.m2 == '') and not opt.unfinished and not opt.continued then flags.incomplete = true end local raw = pick(args, N.indent) d.indent = parseLength(raw) if raw and not d.indent then flags.unknown = true end if hasUnknown(args, 2) then flags.unknown = true end applyAuto(d, ctx, not opt.continued, true) local html = emit('stagger', d, opt, flags) return html .. categories(flags) end end local function mesra(frame) local args = getArgs(frame) local ctx = state.ctx or defaultCtx() local flags = {} local opt = rowOpts(args, flags) local d = commonRow(args, ctx, flags) d.text = clean(args[1]) local a = pick(args, N.align) if a then d.align = ALIGN[a:lower()] if not d.align then flags.unknown = true end end local raw = pick(args, N.indent) d.indent = parseLength(raw) if raw and not d.indent then flags.unknown = true end if hasUnknown(args, 1) then flags.unknown = true end applyAuto(d, ctx, ctx.mesra and not opt.continued, true) local html = emit('mesra', d, opt, flags) return html .. categories(flags) end local function emptyFn(kind) return function(frame) local args = getArgs(frame) local ctx = state.ctx or defaultCtx() local flags = {} local d = commonRow(args, ctx, flags) local raw = pick(args, N.height) d.height = parseLength(raw) if raw and not d.height then flags.unknown = true end if hasUnknown(args, 0) then flags.unknown = true end local html if d.height then html = rowGap(d) elseif kind == 'bayt' then d.m1, d.m2 = '', '' html = rowBayt(d) else d.text, d.blank = '', true html = rowMesra(d) end return plain(html) .. categories(flags) end end -- هر خطای پیش‌بینی‌نشده به‌جای شکستن صفحه، پیامی قرمز + رده می‌دهد local function safe(fn) return function(frame) local ok, res = pcall(fn, frame) if ok then return res end return '<span class="error">خطا در پودمان شعر: ' .. esc(tostring(res)) .. '</span>' .. categories({ error = true }) end end p.open = safe(open) p.close = safe(close) p.bayt = safe(bayt) p.stagger = safe(staggerFn()) p.ladder = safe(staggerFn()) p.mesra = safe(mesra) p.emptyBayt = safe(emptyFn('bayt')) p.emptyMesra = safe(emptyFn('mesra')) p.config = cfg -- (برای آزمون و سفارشی‌سازی) return p 4j7j3zf8ke6crbqps359fwodnpazhpf بحث کاربر:Charan Gill 3 98207 305258 2026-10-19T14:19:50Z Hanooz 17889 /* به ویکی‌نبشته خوش‌آمدید */ بخش جدید 305258 wikitext text/x-wiki ==به ویکی‌نبشته خوش‌آمدید== درود Charan Gill، و به ویکی‌نبشته [[راهنما:آشنایی|خوش‌آمدید]]! از شما بابت پیوستن به این پروژه<!-- پایان پارامتر page --><!-- پایان پارامتر newpage --><!-- پایان پارامتر pagefix --> سپاسگزاریم. امیدوارم این‌جا را دوست داشته باشید و تصمیم بگیرید بمانید. در ادامه چند پیوند مفید برای تازه‌واردان آمده‌است: [[پرونده:Carl Spitzweg 021-detail.jpg|frameless|left|]] * [[راهنما:درون‌مایه|صفحه‌های راهنما]]، به‌ویژه برای [[راهنما:نمونه‌خوانی|نمونه‌خوانی]] * [[راهنما:راهنمای کتابداران تازه‌وارد]] * [[ویکی‌نبشته:شیوه‌نامه|شیوه‌نامه]] * [[ویکی‌نبشته:آنچه ویکی‌نبشته دربرمی‌گیرد|سیاست شمول]] * [[ویکی‌نبشته:برای اهالی ویکی‌پدیا|ویکی‌نبشته:برای ویکی‌پدیایی‌ها]] می‌توانید توضیح کوتاهی دربارهٔ علایق خود و مشارکت‌هایتان در دیگر پروژه‌های ویکی‌مدیا، مانند ویکی‌پدیا و ویکی‌انبار، در [[کاربر:Charan Gill|صفحهٔ کاربری]] خود بنویسید. اگر سؤالی دارید می‌توانید در [[ویکی‌نبشته:دفترخانه]] بپرسید. امیدوارم از مشارکت در ویکی‌نبشته، کتابخانه‌ای که استفاده از آن برای همه آزاد است، لذت ببرید! در بحث‌ها، لطفاً نظرات خود را با درج چهار مدک (<nowiki>~~~~</nowiki>) «امضا» کنید؛ این کار به‌طور خودکار نام کاربری شما و تاریخ را درج می‌کند. اگر به کمک نیاز دارید، در صفحهٔ بحث من از من بپرسید، یا پرسش خود را همین‌جا مطرح کنید (روی '''<span class="plainlinks">[//fa.wikisource.org/w/index.php?title=%D8%A8%D8%AD%D8%AB_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1:Charan_Gill&action=edit&section=new ویرایش]</span>''' کلیک کنید) و پیش از پرسش خود عبارت <code><nowiki>{{</nowiki>[[:رده:کاربران به‌دنبال کمک|کمکم کن]]<nowiki>}}</nowiki></code> را قرار دهید. باز هم خوش‌آمدید! [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۱۹ اکتبر ۲۰۲۶، ساعت ۱۴:۱۹ (UTC) 413ri9lepwq7om37wd73fvktafbykh8 پدیدآورنده:احمدعلی رجایی بخارایی 102 98208 305261 2026-10-19T14:47:07Z Hanooz 17889 صفحه‌ای تازه حاوی «{{author | firstname = احمدعلی | lastname = رجایی بخارایی | last_initial = ب | birthyear = ۱۲۹۵ | deathyear = ۱۳۵۷ | description = }} * ''شاهنامه برای دریافت صله سروده نشده است'' {{پیوند ویکی‌انبار|شاهنامه برای دریافت صله سروده نشده است - از مجله دانشکده ادبیات مشهد، شماره ۴،...» ایجاد کرد 305261 wikitext text/x-wiki {{author | firstname = احمدعلی | lastname = رجایی بخارایی | last_initial = ب | birthyear = ۱۲۹۵ | deathyear = ۱۳۵۷ | description = }} * ''شاهنامه برای دریافت صله سروده نشده است'' {{پیوند ویکی‌انبار|شاهنامه برای دریافت صله سروده نشده است - از مجله دانشکده ادبیات مشهد، شماره ۴، سال سوم، زمستان ۱۳۴۶ - احمدعلی رجائی.pdf}} {{مالکیت عمومی در ایران}} {{Authority control}} [[رده:پدیدآورندگان ایرانی]] b496jk99s7357upto2hoddhykc6bltl 305262 305261 2026-10-19T14:52:47Z Hanooz 17889 305262 wikitext text/x-wiki {{author | firstname = احمدعلی | lastname = رجایی بخارایی | last_initial = ر | birthyear = ۱۲۹۵ | deathyear = ۱۳۵۷ | description = }} * ''شاهنامه برای دریافت صله سروده نشده است'' {{پیوند ویکی‌انبار|شاهنامه برای دریافت صله سروده نشده است - از مجله دانشکده ادبیات مشهد، شماره ۴، سال سوم، زمستان ۱۳۴۶ - احمدعلی رجائی.pdf}} {{مالکیت عمومی در ایران}} {{Authority control}} [[رده:پدیدآورندگان ایرانی]] hwphm871d1k4m4ldhjfy7dub2co8do7 پدیدآورنده:احمدعلی رجایی 102 98209 305263 2026-10-19T14:53:09Z Hanooz 17889 تغییرمسیر به [[پدیدآورنده:احمدعلی رجایی بخارایی]] 305263 wikitext text/x-wiki #تغییر_مسیر [[پدیدآورنده:احمدعلی رجایی بخارایی]] nw0olp76gsoybq6mw1gcw52tzy0c83f برگه:Jondi Shapour Magazine, no. 5.pdf/۱۰۶ 104 98210 305267 2026-10-19T21:04:45Z Darafsh 3597 Pywikibot 11.8.0 305267 proofread-page text/x-wiki <noinclude><pagequality level="1" user="" /></noinclude>{{فمخ|22}} {| width=100%| |- | width=25%| || width=50% align=left| [[پرونده:Logo of Jondi Shapour Journal.png|200px]]{{سخ}} [[پرونده:Jondi Shapour Magazine, no. 1 (page 139 crop).jpg|50px]] {{سخ}} JSMagazine.ir🌐 {{سخ}} ‫‪✉ info@JSMagazine.ir {{سخ}} عناوین و مقالات مجله را به صورت آنلاین ببینید || width=25%|{{عرچ|title=1|‫شاپا‪۲۴۷۶-۵۲۰۱ :‬‬}} |}<noinclude></noinclude> 5e5xx87c22bqcvym2e52afqbpevyuca 305268 305267 2026-10-19T21:05:06Z Darafsh 3597 /* نمونه‌خوانی‌شده */ 305268 proofread-page text/x-wiki <noinclude><pagequality level="3" user="Darafsh" /></noinclude>{{فمخ|22}} {| width=100%| |- | width=25%| || width=50% align=left| [[پرونده:Logo of Jondi Shapour Journal.png|200px]]{{سخ}} [[پرونده:Jondi Shapour Magazine, no. 1 (page 139 crop).jpg|50px]] {{سخ}} JSMagazine.ir🌐 {{سخ}} ‫‪✉ info@JSMagazine.ir {{سخ}} عناوین و مقالات مجله را به صورت آنلاین ببینید || width=25%|{{عرچ|title=1|‫شاپا‪۲۴۷۶-۵۲۰۱ :‬‬}} |}<noinclude></noinclude> 7ww8bmhxg4vjedf3gx94ch7bsdd1tx5 الگو:Brace2 10 98226 305289 2026-10-19T22:19:40Z Hanooz 17889 Hanooz صفحهٔ [[الگو:Brace2]] را به [[الگو:ابرو۲]] منتقل کرد 305289 wikitext text/x-wiki #تغییر_مسیر [[الگو:ابرو۲]] jke9t2fg7kra0t4ru6fpifgtisl712d