.TH REM2PS 1 "2026-06-05" "Remind" "VERSION 06.02.07" .SH "نام (NAME)" rem2ps \- رسم یک تقویم PostScript از خروجی Remind .SH "خلاصه دستور (SYNOPSIS)" .B rem2ps [\fIoptions\fR] .SH "توضیحات (DESCRIPTION)" دستور \fBrem2ps\fR ورودی استاندارد را که باید نتیجهٔ اجرای \fBRemind\fR با گزینهٔ \fB\-p\fR یا \fB\-pp\fR باشد می‌خواند. این دستور کد PostScript (که یک تقویم را رسم می‌کند) در خروجی استاندارد تولید می‌کند. .PP اگرچه از \fBrem2ps\fR همچنان نگهداری خواهد شد، اما قابلیت جدیدی به آن اضافه نمی‌شود. در عوض، تمام توسعه‌های جدید روی \fBrem2pdf\fR ادامه خواهد یافت. .PP برای جزئیات بیشتر دربارهٔ داده‌های \fB\-p\fR بخش «REM2PS INPUT FORMAT» را ببینید. این بخش ممکن است در صورتی که بخواهید پشت‌بندهای دیگری برای \fBRemind\fR بسازید مفید باشد. .PP توجه داشته باشید که \fBrem2ps\fR از ورودی UTF-8 پشتیبانی نمی‌کند. اگر نیاز به رندر کردن نویسه‌های خارج از مجموعه نویسه‌های ASCII دارید، به جای آن \fBrem2pdf\fR را ببینید. .SH "گزینه‌ها (OPTIONS)" .TP .B \-\-version نسخهٔ \fBrem2ps\fR را چاپ کرده و خارج می‌شود. .TP .B \-v پرحرفی بیشتر. این گزینه باعث می‌شود \fBrem2ps\fR پیام‌های پیشرفت را در جریان خطای استاندارد چاپ کند. در حالت عادی، خروجی بی‌صدا است. .TP .B \-p file محتویات \fIfile\fR را در پیش‌درآمد (prologue) کد PostScript قرار می‌دهد. این کار به شما امکان می‌دهد رویه‌ها، متغیرها و غیره را که می‌توانند توسط یادآورهای \fBPS\fR و \fBPSFILE\fR استفاده شوند تعریف کنید. نباید هیچ کامنت ساختاری سند در پیش‌درآمد خود قرار دهید. .TP .B \-l تقویم را به جای حالت پیش‌فرض عمودی (portrait)، در حالت افقی (landscape) ایجاد می‌کند. .TP .B \-x هنگام چاپ تقویم، شماره‌های روز را در بالا سمت چپ خانهٔ هر روز قرار می‌دهد. اگر این گزینه نادیده گرفته شود، شماره‌های روز در بالا سمت راست ظاهر می‌شوند. .TP \fB\-c\fR[\fIn\fR] اگر \fIn\fR ذکر نشود، تقویم‌های کوچک ماه‌های قبل و بعد را که معمولاً تولید می‌شوند غیرفعال می‌کند. اگر \fIn\fR مشخص شود، می‌تواند بین ۰ تا ۳ باشد که معانی زیر را دارد: .RS .TP .B 0 غیرفعال کردن تقویم‌های کوچک .TP .B 1 در صورت وجود فضا، تقویم‌های کوچک را در پایین سمت راست قرار می‌دهد؛ در غیر این صورت، آن‌ها را در بالا سمت چپ قرار می‌دهد. .TP .B 2 در صورت وجود فضا، تقویم‌های کوچک را در بالا سمت چپ قرار می‌دهد؛ در غیر این صورت، آن‌ها را در پایین سمت راست قرار می‌دهد. .TP .B 3 در صورت وجود فضا، تقویم کوچک ماه قبل را در بالا سمت چپ و ماه بعد را در پایین سمت راست قرار می‌دهد؛ در غیر این صورت از \fIn\fR=1 پیروی می‌کند. اندکی تأمل نشان می‌دهد گزینه‌ای که در صورت وجود فضا تقویم‌ها را جدا کرده و در غیر این صورت از \fIn\fR=2 پیروی کند، همان نتیجهٔ \fIn\fR=3 را در بر خواهد داشت. .RE .TP .B \-i از کدگذاری استاندارد ISO 8859-1 برای فونت‌های PostScript استفاده می‌کند. اگر از این گزینه استفاده نکنید، کدگذاری پیش‌فرض به کار گرفته می‌شود. در صورت استفاده از این گزینه، احتمالاً باید خروجی Remind (معمولاً UTF-8) را نیز با استفاده از \fBiconv\fR(1) به ISO-8859-1 تبدیل کنید. .TP .B \-e کاری می‌کند که تقویم تمام صفحه را پر کند. به طور پیش‌فرض، تقویم کمی کوچک‌تر از صفحه است. این امر به روزهایی که یادآورهای زیادی دارند اجازه می‌دهد در صورت نیاز «بزرگ‌تر» شوند. با این حال، اگر روزهایی ندارید که گسترش پیدا کنند، می‌توانید از این گزینه استفاده کنید تا همهٔ خانه‌ها کمی بزرگ‌تر شوند. یک نکتهٔ مهم: اگر از گزینهٔ \fB\-e\fR استفاده کنید و یک روز یادآورهای زیادی داشته باشد، تقویم ممکن است به خارج از صفحه گسترش یابد و برخی اطلاعات از دست برود. آن را بیازمایید! .TP .B \-m media اندازهٔ صفحه را تنظیم می‌کند. در صورت استفاده از گزینهٔ \-m، باید نوع رسانه (media type) را مشخص کنید که می‌تواند یکی از موارد زیر باشد (اندازه‌ها تقریبی هستند): .RS .TP Letter ۸٫۵ در ۱۱ اینچ. .TP Legal ۸٫۵ در ۱۴ اینچ. .TP Ledger ۱۱ در ۱۷ اینچ. .TP Statement ۵٫۵ در ۸٫۵ اینچ. .TP Executive ۷٫۵ در ۱۰ اینچ. .TP A3 ۲۹٫۷ در ۴۲ سانتی‌متر. .TP A4 ۲۱ در ۲۹٫۷ سانتی‌متر. .TP A5 ۱۴٫۸ در ۲۱ سانتی‌متر. .TP B4 ۲۵٫۷ در ۳۶٫۴ سانتی‌متر. .TP B5 ۱۸٫۳ در ۲۵٫۷ سانتی‌متر. .TP Folio ۸٫۵ در ۱۳ اینچ. .TP Quarto ۸٫۵ در ۱۰٫۸ اینچ. .TP 10x14 ۱۰ در ۱۴ اینچ. .TP \fIX\fRx\fIY\fRin \fIX\fR در \fIY\fR اینچ، که در آن \fIX\fR و \fIY\fR می‌توانند اعداد اعشاری باشند. .TP \fIX\fRx\fIY\fRcm \fIX\fR در \fIY\fR سانتی‌متر، که در آن \fIX\fR و \fIY\fR می‌توانند اعداد اعشاری باشند. .PP دستور \(lqrem2ps \-m help\(rq را برای مشاهدهٔ فهرستی از رسانه‌های موجود اجرا کنید. توجه داشته باشید که نوع رسانه (و همهٔ گزینه‌های \fBrem2ps\fR) به بزرگی و کوچکی حروف حساس هستند. اگر از گزینهٔ \fB\-m\fR استفاده نکنید، رسانه به مقدار پیش‌فرض زمان کامپایل بازمی‌گردد \- این مقدار معمولاً برای آمریکای شمالی Letter و برای اروپا A4 است. گزینهٔ \(lq\-m help\(rq مقدار پیش‌فرض کامپایل‌شده را نمایش می‌دهد. .RE .TP \fB\-f\fR[\fBtshed\fR] \fIfont\fR به ترتیب فونت عنوان تقویم، تقویم‌های کوچک، سربرگ روزهای هفته، مدخل‌های تقویم و شماره‌های روز را تنظیم می‌کند. \fIfont\fR باید نام یک فونت معتبر PostScript باشد. فونت‌های پیش‌فرض معادل مشخص کردن عبارت زیر هستند: .RS .PP .nf \-ftshe Helvetica \-fd Helvetica-BoldOblique .fi .PP به عبارت دیگر، فونت‌های سربرگ، مدخل‌ها و تقویم‌های کوچک روی Helvetica تنظیم شده و فونت شماره‌های روز روی Helvetica-BoldOblique تنظیم می‌شود. .RE .TP \fB\-s\fR[\fBthed\fR] \fIsize\fR به ترتیب اندازهٔ متن (بر حسب پوینت) را برای عنوان تقویم، سربرگ روزهای هفته، مدخل‌های تقویم و شماره‌های روز تنظیم می‌کند. \fIsize\fR باید یک عدد ده‌دهی باشد. اندازه‌های پیش‌فرض معادل مشخص کردن عبارت زیر هستند: .RS .PP .nf \-sthd 14 \-se 8 .fi .PP به عبارت دیگر، فونت‌های سربرگ و شماره‌های روز ۱۴ پوینتی بوده و مدخل‌های تقویم با متن ۸ پوینتی چاپ می‌شوند. .RE .TP \fB\-b\fR \fIsize\fR اندازهٔ حاشیهٔ سفید خالی را در هر خانهٔ تقویم روی \fIsize\fR پوینت تنظیم می‌کند. اندازهٔ پیش‌فرض حاشیه ۶ پوینت یا ۱/۱۲ اینچ است..TP \fB\-t\fR \fIsize\fR ضخامت خطوط مشکی شبکه تقویم را تنظیم می‌کند. مقدار پیش‌فرض ۱ است که ضخامت خطی برابر با یک پوینت (۱/۷۲ اینچ) را تعیین می‌کند. .TP \fB\-o\fR[\fBlrtb\fR] \fIsize\fR حاشیه‌های چپ (left)، راست (right)، بالا (top) و/یا پایین (bottom) را به میزان \fIsize\fR پوینت تنظیم می‌کند. تنها برای این گزینه، \fIsize\fR باید یک عدد صحیح باشد و اندازه حاشیه را با واحد ۱/۷۲ اینچ نشان می‌دهد. اندازه پیش‌فرض حاشیه‌ها ۳۶ است که نمایانگر حاشیه نیم‌اینچی است. اگر قصد دارید صفحه تقویم را برای قرار دادن در زونکن پانچ کنید، ممکن است بخواهید حاشیه چپ را به یک اینچ افزایش دهید. در این حالت، برای به دست آوردن خروجی مناسب، باید اندازه قلم سربرگ را نیز به ۱۲ پوینت کاهش دهید: .PP .nf # This gives good results for putting into a binder rem2ps \-ol 72 \-sh 12 .fi .SH "نحوه استفاده (USAGE)" برای استفاده از \fBrem2ps\fR، باید خروجی \fBRemind\fR همراه با گزینه \fB\-p\fR را به \fBrem2ps\fR لوله‌کشی (pipe) کنید و سپس نتیجه را به یک چاپگر بفرستید. این سازوکار به ساده‌ترین شکل با چند مثال نشان داده می‌شود: .PP .nf remind \-p12 /dev/null 1 jan 1994 | rem2ps | lpr \-Plaser .fi .PP این مثال یک تقویم خالی برای کل سال ۱۹۹۴ ایجاد می‌کند و آن را به چاپگری با نام «laser» ارسال می‌نماید. .PP .nf remind \-p ~/.reminders | rem2ps \-l \-sd 18 > cal.ps .fi .PP این یادآور یک تقویم برای ماه جاری ایجاد کرده و ورودی‌ها را از فایل یادآور «~/.reminders» درون آن پر می‌کند. تقویم در حالت افقی (landscape) با اندازه قلم ۱۸ برای شماره روزها تولید می‌شود. نتیجه در فایل PostScript با نام «cal.ps» ذخیره می‌گردد. .PP .SH "متغیرهای در دسترس برای کد POSTSCRIPT ارائه‌شده توسط کاربر (VARIABLES AVAILABLE TO USER-SUPPLIED POSTSCRIPT CODE)" .PP متغیرهای زیر برای یادآورهای نوع \fBPS\fR و \fBPSFILE\fR در دسترس هستند. (این مطالب در صفحه راهنمای \fBRemind\fR نیز تکرار شده است.) .TP LineWidth عرض خطوط مشکی شبکه تشکیل‌دهنده تقویم. .TP Border فاصله حاشیه بین مرکز خطوط شبکه و فضای مورد استفاده برای چاپ ورودی‌های تقویم. این حاشیه معمولاً یک فضای خالی است. .TP BoxWidth و BoxHeight عرض و ارتفاع هر خانه تقویم، از مرکز تا مرکز خطوط مشکی شبکه. .TP InBoxHeight ارتفاع از مرکز خط مشکی پایین شبکه تا بالای ناحیه عادی ورودی تقویم. فضای بین این نقطه تا بالای خانه، تنها برای رسم شماره روز استفاده می‌شود. .TP /DayFont، /TitleFont، /EntryFont، /SmallFont و /HeadFont قلم‌هایی که به ترتیب برای رسم شماره روزها، عنوان ماه و سال، ورودی‌های تقویم، تقویم‌های کوچک، و سربرگ روزهای هفته استفاده می‌شوند. .TP DaySize، TitleSize، EntrySize و HeadSize اندازه قلم‌های فوق. (اندازه قلم تقویم کوچک در اینجا تعریف \fIنشده\fR است.) برای نمونه، اگر می‌خواهید تاریخ عبری را در کنار شماره روز عادی در تقویم چاپ کنید، از دستور زیر استفاده نمایید: .PP .nf REM PS Border BoxHeight Border sub DaySize sub moveto \\ /DayFont findfont DaySize scalefont setfont \\ ([hebday(today())] [hebmon(today())]) show .fi .PP .RS توجه کنید که چگونه /DayFont و DaySize به کار گرفته شده‌اند. .RE .PP توجه داشته باشید که در صورت نوشتن کد PostScript، احتمال تولید فایل‌های نامعتبر PostScript وجود دارد. همواره پیش از ارسال پرونده به چاپگر، کد PostScript خود را به دقت با یک نمایش‌دهنده PostScript بیازمایید. نباید از هیچ‌گونه کامنت ساختاردهی سند (document structuring comments) در کد PostScript خود استفاده کنید. .PP علاوه بر این، پیش از رسم هر صفحه تقویم، \fBrem2ps\fR کد PostScript زیر را صادر می‌کند: .PP .nf save (mon) (yr) PreCal restore .fi .PP که در آن \fImon\fR و \fIyr\fR ماه و سال صفحه تقویم هستند. رویه (procedure) پیش‌فرض \fBPreCal\fR صرفاً آرگومان‌ها را خارج (pop) کرده و کاری انجام نمی‌دهد. با این حال، می‌توانید یک تابع \fBPreCal\fR در فایل مقدمه (prologue) خود تعریف کنید تا هر عملیاتی که مایلید را انجام دهد؛ برای نمونه، می‌تواند یک پس‌زمینه برای کل تقویم رسم کند. .PP در چارچوب رویه \fBPreCal\fR، شرایط زیر برقرار است: .TP o مبدأ مختصات PostScript در گوشه پایین و سمت چپ صفحه قرار دارد و واحدهای PostScript معادل ۱/۷۲ اینچ معتبر هستند. .TP o متغیرهای MinX، MinY، MaxX و MaxY کادر محدودکننده (bounding box) که تقویم درون آن رسم خواهد شد را مشخص می‌کنند. .TP o متغیرهای قلم و اندازه قلم، و همچنین متغیرهای Border و LineWidth که پیش‌تر شرح داده شدند، معتبر هستند. .PP برای نمونه، فایلی با نام «myprolog» بسازید که محتویات آن به شرح زیر باشد: .PP .nf /PreCal { /yr exch def /mon exch def /xsiz1 MaxX MinX sub def /ysiz1 MaxY MinY sub def /xsiz xsiz1 MinX sub MinX sub def /ysiz ysiz1 MinY sub MinY sub def xsiz ysiz lt {/len xsiz 1.41 mul def MinX MinX add ysiz1 xsiz1 sub 2 div MinY add MinY add moveto} {/len ysiz 1.41 mul def xsiz1 ysiz1 sub 2 div MinX add MinX add MinY MinY add moveto} ifelse /Helvetica-Bold findfont 1 scalefont setfont mon stringwidth pop ( ) stringwidth pop add yr stringwidth pop add len exch div /len exch def /Helvetica-Bold findfont len scalefont setfont 0.95 setgray 45 rotate mon show ( ) show yr show } bind def .fi .PP از آن فایل به همراه گزینه \fB\-p\fR در دستور \fBrem2ps\fR استفاده کنید تا تقویم‌هایی تولید شوند که سال و ماه با حروف بزرگ خاکستری‌رنگ در پس‌زمینه آنها نقش بسته است. .PP.SH "قالب ورودی REM2PS (گزینه \-P) (REM2PS INPUT FORMAT (-P OPTION))" گزینهٔ \fB\-p\fR یک قالب تبادل دادهٔ قدیمی‌تر و ساده‌تر است که توسط \fBRemind\fR برای برقراری ارتباط با back-endها استفاده می‌شود. توصیه می‌شود back-endهای جدید ترجیحاً از قالب جدیدتر \fB\-pp\fR پشتیبانی کنند، هرچند در صورتی که قالب قدیمی اطلاعات کافی را برای کارکرد صحیح در بر داشته باشد، پشتیبانی از قالب قدیمی‌تر \fB\-p\fR نیز توصیه می‌شود. .PP دستور \fBRemind \-p\fR خطوط زیر را به خروجی استاندارد ارسال می‌کند. این اطلاعات به‌گونه‌ای طراحی شده‌اند که به سادگی توسط برنامه‌های back-end تجزیه شوند: .TP .B # translations این خط نشان می‌دهد که خط بعدی جدول ترجمه (translation table) خواهد بود. خط پس از \fB# translations\fR یک شیء JSON (در یک خط واحد) است که شامل تمام مدخل‌های جدول ترجمه می‌باشد. back-endهایی که نیازی به جدول ترجمه ندارند می‌توانند به سادگی خط بعدی را خوانده و آن را نادیده بگیرند. .RS اگر \fBRemind\fR داده‌های چندین ماه را ارسال کند، تنها ماه نخست شامل جدول ترجمه خواهد بود. .RE .TP .B # rem2ps begin این خط نشان‌دهندهٔ آغاز داده‌های تقویم است. back-endها می‌توانند برای اطمینان از دریافت اطلاعات درست، به دنبال این خط بگردند. .TP \fImonth_name year num_days first_day monday_first\fR در این خط، \fImonth_name\fR نام ماهی است که اطلاعات تقویم آن در ادامه خواهد آمد. \fInum_days\fR تعداد روزهای این ماه است. \fIfirst_day\fR روز هفته برای نخستین روز ماه است (۰ = یکشنبه، ۱ = دوشنبه، ۶ = شنبه). و \fImonday_first\fR در صورتی که پرچم \fB\-m\fR به \fBRemind\fR داده شده باشد ۱، و در غیر این صورت ۰ است. تمام این اطلاعات به این منظور ارائه می‌شوند که back-endها نیازی به محاسبات تاریخ نداشته باشند. توجه داشته باشید که تمام فاصله‌ها در \fImonth_name\fR با زیرخط (underscore) جایگزین می‌شوند. back-endها باید این جایگزینی را به حالت اولیه برگردانند. .TP \fIsun mon tue wed thu fri sat\fR این خط شامل نام روزها است که با فاصله از هم جدا شده‌اند، به همان زبانی که \fBRemind\fR برای آن کامپایل شده است. این اطلاعات می‌تواند توسط back-endها برای یادداشت‌نویسی تقویم‌ها استفاده شود و بدین معناست که نیازی نیست آن‌ها برای زبانی خاص توسعه داده شوند. توجه داشته باشید که تمام فاصله‌ها در نام روزها با زیرخط جایگزین می‌شوند. back-endها باید این جایگزینی را به حالت اولیه برگردانند. .TP \fInext_mon next_days\fR نام ماه بعدی و تعداد روزهای آن. .TP \fIprev_mon prev_days\fR نام ماه قبلی و تعداد روزهای آن. خطوط \fInext_mon\fR و \fIprev_mon\fR می‌توانند برای تولید تقویم‌های کوچک درون‌نما (inset) برای ماه‌های بعد و قبل استفاده شوند. .PP باقی‌ماندهٔ داده‌ها شامل مدخل‌های تقویم در قالب زیر است: .PP \fIyyyy/mm/dd special tag dur time body\fR .PP در اینجا، \fIyyyy\fR سال، \fImm\fR ماه (۰۱-۱۲) و \fIdd\fR روز ماه است. توجه داشته باشید که اجزای تاریخ همواره با "/" از هم جدا می‌شوند، حتی اگر جداکنندهٔ تاریخ در \fBRemind\fR بر روی "-" تنظیم شده باشد. استفادهٔ یکپارچه از "/" برای تسهیل فرآیند تجزیه طراحی شده است. .PP مقدار \fIspecial\fR رشته‌ای است که برای ارتباطات "خارج از باند" (out-of-band) با back-endها استفاده می‌شود. اگر یادآور یک یادآور معمولی باشد، \fIspecial\fR برابر "*" است. بخش پشتیِ \fBrem2ps\fR مقادیر ویژهٔ \fBPostScript\fR و \fBPSFile\fR را می‌شناسد. سایر back-endها ممکن است مقادیر ویژهٔ دیگری را شناسایی کنند. یک back-end باید یادآوری دارای مقدار ویژه را که نمی‌شناسد، \fIبه‌طور خاموش نادیده بگیرد\fR. .PP مقدار \fItag\fR همان برچسبی است که کاربر با عبارت \fBTAG\fR مشخص کرده است، یا اگر برچسبی مشخص نشده باشد برابر "*" خواهد بود. اگر بیش از یک عبارت \fBTAG\fR وجود داشته باشد، برچسب‌ها در یک فهرست جداشده با کاما ظاهر می‌شوند. برای نمونه، دستور \fBREM TAG foo TAG bar TAG quux\fR منجر به مقدار \fBfoo,bar,quux\fR در فیلد \fItag\fR خواهد شد. .PP مقدار \fIdur\fR مقدار \fBDURATION\fR به دقیقه است، یا اگر هیچ مدت‌زمانی تعیین نشده باشد برابر "*". .PP مقدار \fItime\fR زمان یادآور به صورت دقیقه‌های گذشته از نیمه‌شب است، یا اگر یادآور زمان‌بندی‌شده نباشد برابر "*". .PP مقدار \fIbody\fR متن بدنهٔ یادآور است. .PP نسخه‌های آیندهٔ \fBRemind\fR ممکن است کلیدهای بیشتری به شیء JSON بیفزایند. بخش‌های پشتی \fIباید\fR کلیدهایی را که نمی‌شناسند نادیده بگیرند. .PP پس از صادر شدن تمام یادآورهای یک ماه، \fBRemind\fR خط زیر را ارسال می‌کند: .PP \fB# rem2ps end\fR .PP با این حال، back-endها باید تا رسیدن به EOF به خواندن ادامه دهند، زیرا ممکن است داده‌های بیشتری برای ماه‌های بعدی در راه باشد. .PP اگر گزینهٔ \fB\-l\fR را به \fBremind\fR بدهید، ممکن است قبل از یادآورها خطی مشابه این قرار گیرد: .PP \fB# fileinfo \fIlineno filename\fR .PP کلمهٔ \fBfileinfo\fR به‌صورت لفظی (literal) است؛ \fIlineno\fR و \fIfilename\fR شماره خط و نام فایلی که حاوی یادآور است را مشخص می‌کنند. back-endهایی که به این اطلاعات نیازی ندارند، باید خطوطی را که با "#" آغاز می‌شوند نادیده بگیرند (البته به جز خطوط مربوط به # rem2ps). .PP.SH "قالب ورودی JSON جزئی REM2PS (گزینه \-PP) (REM2PS PARTIAL JSON INPUT FORMAT (-PP OPTION))" دستور \fBRemind \-pp\fR خطوط زیر را به خروجی استاندارد ارسال می‌کند. این خطوط به گونه‌ای طراحی شده‌اند که به سادگی تجزیه شوند، اما حاوی اطلاعات بسیار بیشتری نسبت به خروجی سبک قدیمی \fBremind -p\fR هستند. این اطلاعات اضافی شامل بازنمایی دستور «REM» تجزیه‌شده است که به مبدل‌ها اجازه می‌دهد مفهوم و معنای یک یادآور را بهتر حفظ کنند. برای نمونه، این قالب اطلاعات کافی را منتقل می‌کند تا یک بک‌اند بتواند (در بسیاری از موارد) قاعده تکرار یک یادآور را مشخص کند، به جای آنکه صرفاً با هر یادآور مانند یک رویداد یک‌باره برخورد نماید. .PP خطوط ارسال‌شده توسط \fBremind \-pp\fR به شرح زیر هستند: .TP .B # translations این خط مشخص می‌کند که خط بعدی جدول ترجمه خواهد بود. خط پس از \fB# translations\fR یک شیء JSON (در یک خط مستقل) است که تمام ورودی‌های جدول ترجمه را در خود دارد. بک‌اندهایی که به جدول ترجمه نیازی ندارند می‌توانند به سادگی آن را خوانده و نادیده بگیرند. .RS اگر \fBRemind\fR داده‌ها را برای چندین ماه ارسال کند، تنها ماه نخست شامل جدول ترجمه خواهد بود. .RE .TP .B # rem2ps2 begin این خط آغاز داده‌های گاه‌شمار را مشخص می‌کند. بک‌اندها می‌توانند برای اطمینان از دریافت اطلاعات صحیح به دنبال آن بگردند. به عدد «2» بعد از «rem2ps» توجه کنید که این قالب را از قالب قدیمی‌تر \fB\-p\fR متمایز می‌سازد. .TP \fImonth_name year num_days first_day monday_first\fR همانند قالب \fB\-p\fR .TP \fIsun mon tue wed thu fri sat\fR همانند قالب \fB\-p\fR .TP \fInext_mon next_days\fR همانند قالب \fB\-p\fR .TP \fIprev_mon prev_days\fR همانند قالب \fB\-p\fR .PP .B ورودی‌های گاه‌شمار (CALENDAR ENTRIES) .PP داده‌های باقی‌مانده شامل ورودی‌های گاه‌شمار است که به عنوان یک شیء JSON در یک خط بیان شده‌اند. هر خط این‌چنینی با «{» آغاز می‌شود و یک شیء معتبر JSON خواهد بود. کلیدهایی که ممکن است در این شیء JSON حضور داشته باشند به شرح زیر است: .TP .B date \fIYYYY-MM-DD\fR کلید \fBdate\fR \fIهمیشه\fR وجود خواهد داشت؛ این مقدار تاریخ فعال‌سازی یادآور است که در قالب یک رشته با ساختار \fIYYYY-MM-DD\fR بیان می‌شود. .TP .B filename \fIf\fR نام فایلی که یادآور در آن یافت شده است. .TP .B lineno \fIn\fR شماره خطی در فایل که یادآور در آن یافت شده است. .TP .B lineno_start \fIn\fR اگر یادآوری به دلیل استفاده از کاراکتر بک‌اسلش برای شکستن خط در چند خط گسترش یافته باشد، ورودی \fBlineno\fR خط \fIآخر\fR یادآور خواهد بود؛ و ورودی \fBlineno_start\fR خط \fIاول\fR آن است. اگر یک یادآور در چند خط گسترش \fIنیافته\fR باشد، تنها ورودی \fBlineno\fR حضور خواهد داشت؛ در این حالت ورودی \fBlineno_start\fR وجود نخواهد داشت. .TP .B nonconst_expr 1 اگر یادآور شامل یک عبارت غیرثابت بوده که برای تعیین تاریخ فعال‌سازی باید ارزیابی می‌شده است، این کلید با مقدار 1 حضور خواهد داشت. در صورت وجود این کلید، اتکا به معنای تکرار یا حتی مفاهیم هر بخشی از یادآور تجزیه‌شده برای یک بک‌اند ناامن خواهد بود، زیرا ممکن است به شیوه‌ای محاسبه شده باشند که در قالب JSON قابل بیان نباشد. .TP .B if_depth \fIn\fR اگر یادآور درون یک یا چند عبارت IF یا ELSE قرار داشته باشد، این کلید حضور خواهد داشت و مقدار آن تعداد IFهای تودرتو از سطح بالا تا یادآور خواهد بود. بک‌اندها باید در تفسیر معنای تکرار یادآورهایی که درون یک بلوک IF یا ELSE قرار دارند احتیاط کنند. .TP .B passthru \fIspecial\fR اگر یادآور یک یادآور SPECIAL باشد، کلید \fBpassthru\fR حضور خواهد داشت و مقدار آن نوع SPECIAL (مانند SHADE، COLOR، MOON و غیره) خواهد بود. .TP .B tags \fIdata\fR اگر عبارات TAG حضور داشته باشند، کلید \fBtags\fR وجود خواهد داشت و شامل فهرستی از برچسب‌ها خواهد بود که با کاما از هم جدا شده‌اند. .TP .B info \fR{ \fIhash\fR } اگر هرگونه عبارت INFO وجود داشته باشد، کلید \fBinfo\fR وجود خواهد داشت. مقدار آن یک هش از جفت‌های کلید-مقدار info خواهد بود. هر کلید، سرایندِ یک رشته INFO است که \fIتماماً به حروف کوچک تبدیل شده است\fR. مقدار نیز همان مقدار به دست آمده از رشته INFO است. .RS .PP برای نمونه، دستور REM زیر: .PP .nf REM INFO "Location: Boardroom" INFO "Summary: None" MSG whatever .fi .PP هش \fBinfo\fR زیر را تولید خواهد کرد: .PP .nf "info" : { "location" : "Boardroom", "summary" : "None" }, .fi .PP .RE .TP .B tz \fIzone\fR اگر عبارت غیرخالی TZ وجود داشته باشد، این کلید شامل نام منطقه زمانی خواهد بود. .TP .B time \fIt\fR اگر عبارت AT وجود داشته باشد، این کلید شامل زمان عبارت AT بر حسب دقیقه پس از نیمه‌شب \fIدر منطقه زمانی پیش‌فرض سیستم\fR خواهد بود. .TP .B time_in_tz \fIt\fR اگر عبارت TZ وجود داشته باشد، این کلید شامل زمان عبارت AT بر حسب دقیقه پس از نیمه‌شب \fIدر منطقه زمانی تعیین‌شده توسط TZ\fR خواهد بود. .TP .B tdelta \fIn\fR اگر یک دلتای زمانی (+n بعد از یک عبارت AT) وجود داشته باشد، این کلید حاوی مقدار دلتا بر حسب دقیقه است. .TP .B trep \fIn\fR اگر تکرار زمانی (*n بعد از یک عبارت AT) وجود داشته باشد، این کلید حاوی مقدار تکرار بر حسب دقیقه است. .TP .B eventduration \fIn\fR اگر عبارت DURATION وجود داشته باشد، این کلید شامل مدت رویداد بر حسب دقیقه است. .TP .B duration \fIn\fR اگر عبارت DURATION وجود داشته باشد، این کلید شامل مدت زمان امروز بر حسب دقیقه است. برای بحث پیرامون تفاوت duration با event duration، به صفحه راهنمای \fBremind(1)\fR بخش «MULTI-DAY EVENTS» مراجعه کنید. .TP .B eventstart \fIdt\fR اگر عبارت AT وجود داشته باشد، این کلید شامل زمان آغاز رویداد با قالب \fIYYYY-MM-DD\fRT\fIHH:MM\fR در \fIمنطقه زمانی پیش‌فرض سیستم\fR خواهد بود. .TP .B eventstart_in_tz \fIdt\fR اگر عبارت TZ وجود داشته باشد، این کلید شامل زمان آغاز رویداد با قالب \fIYYYY-MM-DD\fRT\fIHH:MM\fR در \fIمنطقه زمانی مشخص‌شده توسط TZ\fR خواهد بود. .TP .B back \fIn\fR اگر یادآور دارای یک عبارت «back» باشد (\-n یا \-\-n)، این کلید شامل مقدار back خواهد بود. اگر مقدار «back» برابر با \-n باشد، مقدار مثبت خواهد بود؛ اگر \-\-n باشد، مقدار منفی خواهد بود. .TP .B delta \fIn\fR اگر یادآور دارای یک عبارت «delta» باشد (+n یا ++n)، این کلید شامل مقدار دلتا خواهد بود. اگر مقدار «delta» برابر با +n باشد، مقدار مثبت خواهد بود؛ اگر ++n باشد، مقدار منفی خواهد بود. .TP .B trigbase "\fIdate\fR" اگر یادآور شامل تمامی مؤلفه‌های روز، ماه و سال باشد، آنگاه \fBtrigbase\fR تاریخی است که از این مؤلفه‌ها ساخته شده و با قالب \fIYYYY-MM-DD\fR بیان می‌شود. .TP .B rep \fIn\fR اگر یادآور دارای یک عبارت «repeat» باشد (*n)، این کلید حاوی مقدار تکرار خواهد بود. .TP .B skip \fItype\fR اگر یادآور شامل کلیدواژه‌های SKIP، BEFORE یا AFTER باشد، این کلید شامل آن کلیدواژه خواهد بود. .TP .B localomit \fIarray\fR اگر یادآور دارای یک کلیدواژه محلی OMIT باشد، این کلید حضور خواهد داشت. مقدار آن آرایه‌ای از نام‌های انگلیسی روزهایی است که OMIT (حذف) شده‌اند. .TP .B wd \fIarray\fR اگر یادآور شامل یک یا چند روز از هفته باشد، این کلید حضور خواهد داشت. مقدار آن آرایه‌ای از نام‌های انگلیسی روزهای هفته است که در یادآور ذکر شده‌اند..TP .B d \fIn\fR اگر روز ماه در مشخصات یادآور وجود داشته باشد، این کلید موجود خواهد بود و مقدار آن شماره روز خواهد بود. .TP .B m \fIn\fR اگر ماه در مشخصات یادآور وجود داشته باشد، این کلید موجود خواهد بود و مقدار آن شماره ماه خواهد بود. .TP .B y \fIn\fR اگر سال در مشخصات یادآور وجود داشته باشد، این کلید موجود خواهد بود و مقدار آن سال خواهد بود. .TP .B until \fIYYYY-MM-DD\fR اگر یادآور حاوی بند UNTIL یا THROUGH باشد، این کلید موجود خواهد بود. مقدار آن رشته‌ای به شکل YYYY-MM-DD خواهد بود. .TP .B once 1 اگر یادآور حاوی کلمه کلیدی ONCE باشد، این کلید با مقدار 1 موجود خواهد بود. .TP .B scanfrom \fIYYYY-MM-DD\fR یا \fBscanfrom\fR \fI\-n\fR اگر یادآور حاوی کلمه کلیدی SCANFROM باشد، این کلید موجود خواهد بود و مقدار آن برای یک SCANFROM مطلق، رشته‌ای به شکل YYYY-MM-DD، یا برای یک scanfrom نسبی، یک عدد صحیح منفی به شکل \-n خواهد بود. .TP .B from \fIYYYY-MM-DD\fR اگر یادآور حاوی کلمه کلیدی FROM باشد، این کلید موجود خواهد بود و مقدار آن رشته‌ای به شکل YYYY-MM-DD خواهد بود. .TP .B is_todo \fIflag\fR اگر یادآور یک یادآور TODO باشد، \fIflag\fR عدد صحیح 1 خواهد بود؛ در غیر این صورت، عدد صحیح صفر خواهد بود. .TP .B complete_through \fIYYYY-MM-DD\fR اگر یادآور دارای تاریخ COMPLETE-THROUGH باشد، این کلید موجود خواهد بود و مقدار آن رشته‌ای به شکل YYYY-MM-DD خواهد بود. .TP .B max_overdue \fIn\fR اگر یادآور دارای بند MAX-OVERDUE باشد، این کلید موجود خواهد بود و مقدار آن آرگومان عدد صحیح MAX-OVERDUE خواهد بود. .TP .B priority \fIn\fR اولویت یادآور. همیشه موجود است؛ اگر هیچ کلمه کلیدی PRIORITY مشخص نشده باشد، یادآور دارای اولویت پیش‌فرض 5000 خواهد بود. .TP .B r \fIn\fR برای دستور ویژه SHADE یا COLOR، مؤلفه رنگ قرمز. .TP .B g \fIn\fR برای دستور ویژه SHADE یا COLOR، مؤلفه رنگ سبز. .TP .B b \fIn\fR برای دستور ویژه SHADE یا COLOR، مؤلفه رنگ آبی. .TP .B body \fIbody\fR بدنه یادآور برای صدور. همیشه موجود است. .TP .B calendar_body \fIbody\fR متن مناسب برای قرار گرفتن در گاه‌شمار. تنها زمانی موجود است که بدنه اصلی حاوی توالی‌های %"...%" باشد و از تغییردهنده "q" همراه با پرچم \-pp... در Remind استفاده شده باشد. .TP .B plain_body \fIbody\fR بدنه «ساده» یادآور با حذف تمام توالی‌های %"...%". اگر بک‌اند شما برای رسم یک تقویم طراحی شده است، در صورت وجود باید از \fBcalendar_body\fR استفاده کند. در غیر این صورت، اگر \fBplain_body\fR موجود بود باید از آن استفاده کرده، و در صورت عدم وجود، به سراغ \fBbody\fR برود. .TP .B rawbody \fIraw\fR بدنه «خام» یادآور، پیش از هرگونه الحاق عبارت یا پردازش توالی‌های جایگزینی. اگر بدنه خام با بدنه پردازش‌شده یکسان باشد، این کلید موجود نخواهد بود. .PP پس از صدور یادآورهای یک ماه کامل، \fBRemind\fR این خط را صادر می‌کند: .PP \fB# rem2ps2 end .PP با این حال، بک‌اندها باید خواندن را تا رسیدن به EOF ادامه دهند تا در صورت وجود، داده‌های ماه‌های بعدی را نیز دریافت کنند. .PP.SH "قالب ورودی JSON خالص REM2PS (گزینه \-PPP یا \-P+) (REM2PS PURE JSON INPUT FORMAT (-PPP OR -P+ OPTION))" .PP دستورهای \fBRemind \-ppp\fR و \fBremind \-p+\fR خروجی \fIJSON خالص\fR تولید می‌کنند. قالب به شرح زیر است: .PP \fBRemind\fR یک آرایهٔ JSON خروجی می‌دهد. هر عنصر آرایه یک \fIتوصیف‌گر ماه\fR یا در مورد \fBremind \-p+\fR یک \fIتوصیف‌گر هفته\fR است. .PP هر توصیف‌گر یک شیء JSON با عناصر زیر است: .TP .B caltype \fItype\fR نوع تقویم؛ \fBmonthly\fR (ماهانه) یا \fBweekly\fR (هفتگی). نسخه‌های قدیمی‌تر \fBRemind\fR شامل عنصر \fBcaltype\fR نبودند، بنابراین نبود \fBcaltype\fR باید به عنوان \fBmonthly\fR در نظر گرفته شود. .TP .B monthname \fIname\fR نام ماه. فقط در انواع تقویم ماهانه موجود است. .TP .B year \fIyyyy\fR سال. فقط در انواع تقویم ماهانه موجود است. .TP .B daysinmonnth \fIn\fR تعداد روزهای ماه جاری. فقط در انواع تقویم ماهانه موجود است. .TP .B firstwkday \fIn\fR روز هفته برای نخستین روز ماه (0 = یکشنبه، 1 = دوشنبه، 6 = شنبه). فقط در انواع تقویم ماهانه موجود است. .TP .B mondayfirst \fIn\fR شاخصی مبنی بر این که هفتهٔ تقویم باید با یکشنبه (n=0) یا دوشنبه (n=1) آغاز شود. فقط در انواع تقویم ماهانه موجود است. .TP .B daynames \fR[\fIdays\fR] یک آرایهٔ هفت‌عنصری از نام روزها؛ هر عنصر رشته‌ای است که نام روزها را از یکشنبه تا شنبه نشان می‌دهد. فقط در انواع تقویم ماهانه موجود است. .TP .B prevmonthname \fIname\fR نام ماه پیشین. فقط در انواع تقویم ماهانه موجود است. .TP .B daysinprevmonth \fIn\fR تعداد روزهای ماه پیشین. فقط در انواع تقویم ماهانه موجود است. .TP .B prevmonthyear \fIyyyy\fR سالِ ماه پیشین. (یکسان با \fByear\fR مگر این‌که ماه جاری ژانویه باشد.) فقط در انواع تقویم ماهانه موجود است. .TP .B nextmonthname \fIname\fR نام ماه پسین. فقط در انواع تقویم ماهانه موجود است. .TP .B daysinnextmonth \fIn\fR تعداد روزهای ماه پسین. فقط در انواع تقویم ماهانه موجود است. .TP .B nextmonthyear \fIyyyy\fR سالِ ماه پسین. (یکسان با \fByear\fR مگر این‌که ماه جاری دسامبر باشد.) فقط در انواع تقویم ماهانه موجود است. .TP .B translations \fR{\fIobject\fR} تخلیهٔ کامل جدول ترجمهٔ Remind. در خروجیِ مربوط به چندین ماه یا هفته، جدول ترجمه تنها همراه با ماه یا هفتهٔ نخست گنجانده می‌شود. در هر دو نوع تقویم هفتگی و ماهانه موجود است. .TP .B entries \fR[\fIarray\fR] کلید \fBentries\fR که در هر دو نوع تقویم هفتگی و ماهانه حضور دارد، شامل آرایه‌ای از مدخل‌های تقویم است؛ هر مدخل یک شیء JSON است که ساختاری یکسان با شرح داده‌شده در بخش \fBCALENDAR ENTRIES\fR در بخش \fB\-PP FORMAT\fR دارد، \fIبا تفاوت زیر\fR: در حالت \fB\-PP\fR، اگر یک یادآور دارای نشانگرهای \fB%"\fR باشد، تنها متن میان نشانگرها در عنصر \fBbody\fR گنجانده می‌شود. در حالت \fB\-PPP\fR، کل متن \fIشامل\fR نشانگرهای \fB%"\fR گنجانده می‌شود و در صورت تمایل، استخراج بخش میان نشانگرها بر عهدهٔ back-end خواهد بود. .TP .B dates \fR[\fIarray\fR] کلید \fBdates\fR که فقط در انواع تقویم هفتگی موجود است، شامل هفت مدخل است؛ یکی برای هر ستون در تقویم هفتگی. هر مدخل یک شیء JSON شامل جفت‌های کلید/مقدار زیر است: .RS .TP .B date \fR\fIYYYY-MM-DD\fR تاریخ ستون. .TP .B day \fR\fIDD\fR شمارهٔ روز در ستون. .TP .B dayname \fR\fIweekday_name\fR نام روز هفته (احتمالاً بومی‌سازی‌شده). .TP .B month \fR\fImonth_name\fR نام ماه (احتمالاً بومی‌سازی‌شده). .TP .B year \fR\fIYYYY\fR سال. .RE.SH "نویسندگان (AUTHORS)" برنامه rem2ps توسط Dianne Skoll نوشته شده است. .SH "گزارش باگ‌ها (BUGS)" برخلاف \fBRemind\fR، تمام گزینه‌های \fBrem2ps\fR به حروف بزرگ و کوچک حساس هستند. هر زمان که نام یا اندازه قلم، ضخامت خط یا پهنای کادر را مشخص کنید، با آن مانند یک رشته رفتار شده و مستقیماً به مفسر PostScript ارسال می‌شود. بنابراین، اگر قلم‌ها یا اندازه‌های نامعتبر تعیین کنید، \fBrem2ps\fR خطایی اعلام نمی‌کند، اما خروجی PostScript حاصل احتمالاً کار نخواهد کرد. .PP باید اطمینان حاصل کنید که مقادیر ارائه‌شده برای عرض حاشیه‌ها معقول باشند. اگر آن‌ها برای اندازه رسانه (کاغذ) بیش از حد بزرگ باشند، \fBrem2ps\fR خطایی نمی‌گیرد، اما در این حالت نیز خروجی PostScript احتمالاً کار نخواهد کرد. .SH "صفحه خانگی (HOME PAGE)" https://dianne.skoll.ca/projects/remind .SH "همچنین ببینید (SEE ALSO)" \fBremind\fR، \fBrem2pdf\fR، \fBrem2html\fR، \fBtkremind\fR.