REM2PS(1) VERSION 06.02.07 REM2PS(1)

rem2ps - رسم یک تقویم PostScript از خروجی Remind

rem2ps [options]

دستور rem2ps ورودی استاندارد را که باید نتیجهٔ اجرای Remind با گزینهٔ -p یا -pp باشد می‌خواند. این دستور کد PostScript (که یک تقویم را رسم می‌کند) در خروجی استاندارد تولید می‌کند.

اگرچه از rem2ps همچنان نگهداری خواهد شد، اما قابلیت جدیدی به آن اضافه نمی‌شود. در عوض، تمام توسعه‌های جدید روی rem2pdf ادامه خواهد یافت.

برای جزئیات بیشتر دربارهٔ داده‌های -p بخش «REM2PS INPUT FORMAT» را ببینید. این بخش ممکن است در صورتی که بخواهید پشت‌بندهای دیگری برای Remind بسازید مفید باشد.

توجه داشته باشید که rem2ps از ورودی UTF-8 پشتیبانی نمی‌کند. اگر نیاز به رندر کردن نویسه‌های خارج از مجموعه نویسه‌های ASCII دارید، به جای آن rem2pdf را ببینید.

نسخهٔ rem2ps را چاپ کرده و خارج می‌شود.
پرحرفی بیشتر. این گزینه باعث می‌شود rem2ps پیام‌های پیشرفت را در جریان خطای استاندارد چاپ کند. در حالت عادی، خروجی بی‌صدا است.
محتویات file را در پیش‌درآمد (prologue) کد PostScript قرار می‌دهد. این کار به شما امکان می‌دهد رویه‌ها، متغیرها و غیره را که می‌توانند توسط یادآورهای PS و PSFILE استفاده شوند تعریف کنید. نباید هیچ کامنت ساختاری سند در پیش‌درآمد خود قرار دهید.
تقویم را به جای حالت پیش‌فرض عمودی (portrait)، در حالت افقی (landscape) ایجاد می‌کند.
هنگام چاپ تقویم، شماره‌های روز را در بالا سمت چپ خانهٔ هر روز قرار می‌دهد. اگر این گزینه نادیده گرفته شود، شماره‌های روز در بالا سمت راست ظاهر می‌شوند.
اگر n ذکر نشود، تقویم‌های کوچک ماه‌های قبل و بعد را که معمولاً تولید می‌شوند غیرفعال می‌کند. اگر n مشخص شود، می‌تواند بین ۰ تا ۳ باشد که معانی زیر را دارد:
0
غیرفعال کردن تقویم‌های کوچک
1
در صورت وجود فضا، تقویم‌های کوچک را در پایین سمت راست قرار می‌دهد؛ در غیر این صورت، آن‌ها را در بالا سمت چپ قرار می‌دهد.
2
در صورت وجود فضا، تقویم‌های کوچک را در بالا سمت چپ قرار می‌دهد؛ در غیر این صورت، آن‌ها را در پایین سمت راست قرار می‌دهد.
3
در صورت وجود فضا، تقویم کوچک ماه قبل را در بالا سمت چپ و ماه بعد را در پایین سمت راست قرار می‌دهد؛ در غیر این صورت از n=1 پیروی می‌کند. اندکی تأمل نشان می‌دهد گزینه‌ای که در صورت وجود فضا تقویم‌ها را جدا کرده و در غیر این صورت از n=2 پیروی کند، همان نتیجهٔ n=3 را در بر خواهد داشت.
از کدگذاری استاندارد ISO 8859-1 برای فونت‌های PostScript استفاده می‌کند. اگر از این گزینه استفاده نکنید، کدگذاری پیش‌فرض به کار گرفته می‌شود. در صورت استفاده از این گزینه، احتمالاً باید خروجی Remind (معمولاً UTF-8) را نیز با استفاده از iconv(1) به ISO-8859-1 تبدیل کنید.
کاری می‌کند که تقویم تمام صفحه را پر کند. به طور پیش‌فرض، تقویم کمی کوچک‌تر از صفحه است. این امر به روزهایی که یادآورهای زیادی دارند اجازه می‌دهد در صورت نیاز «بزرگ‌تر» شوند. با این حال، اگر روزهایی ندارید که گسترش پیدا کنند، می‌توانید از این گزینه استفاده کنید تا همهٔ خانه‌ها کمی بزرگ‌تر شوند. یک نکتهٔ مهم: اگر از گزینهٔ -e استفاده کنید و یک روز یادآورهای زیادی داشته باشد، تقویم ممکن است به خارج از صفحه گسترش یابد و برخی اطلاعات از دست برود. آن را بیازمایید!
اندازهٔ صفحه را تنظیم می‌کند. در صورت استفاده از گزینهٔ -m، باید نوع رسانه (media type) را مشخص کنید که می‌تواند یکی از موارد زیر باشد (اندازه‌ها تقریبی هستند):
۸٫۵ در ۱۱ اینچ.
۸٫۵ در ۱۴ اینچ.
۱۱ در ۱۷ اینچ.
۵٫۵ در ۸٫۵ اینچ.
۷٫۵ در ۱۰ اینچ.
۲۹٫۷ در ۴۲ سانتی‌متر.
۲۱ در ۲۹٫۷ سانتی‌متر.
۱۴٫۸ در ۲۱ سانتی‌متر.
۲۵٫۷ در ۳۶٫۴ سانتی‌متر.
۱۸٫۳ در ۲۵٫۷ سانتی‌متر.
۸٫۵ در ۱۳ اینچ.
۸٫۵ در ۱۰٫۸ اینچ.
10x14
۱۰ در ۱۴ اینچ.
X در Y اینچ، که در آن X و Y می‌توانند اعداد اعشاری باشند.
X در Y سانتی‌متر، که در آن X و Y می‌توانند اعداد اعشاری باشند.

دستور “rem2ps -m help” را برای مشاهدهٔ فهرستی از رسانه‌های موجود اجرا کنید. توجه داشته باشید که نوع رسانه (و همهٔ گزینه‌های rem2ps) به بزرگی و کوچکی حروف حساس هستند. اگر از گزینهٔ -m استفاده نکنید، رسانه به مقدار پیش‌فرض زمان کامپایل بازمی‌گردد - این مقدار معمولاً برای آمریکای شمالی Letter و برای اروپا A4 است. گزینهٔ “-m help” مقدار پیش‌فرض کامپایل‌شده را نمایش می‌دهد.

به ترتیب فونت عنوان تقویم، تقویم‌های کوچک، سربرگ روزهای هفته، مدخل‌های تقویم و شماره‌های روز را تنظیم می‌کند. font باید نام یک فونت معتبر PostScript باشد. فونت‌های پیش‌فرض معادل مشخص کردن عبارت زیر هستند:
-ftshe Helvetica -fd Helvetica-BoldOblique

به عبارت دیگر، فونت‌های سربرگ، مدخل‌ها و تقویم‌های کوچک روی Helvetica تنظیم شده و فونت شماره‌های روز روی Helvetica-BoldOblique تنظیم می‌شود.

به ترتیب اندازهٔ متن (بر حسب پوینت) را برای عنوان تقویم، سربرگ روزهای هفته، مدخل‌های تقویم و شماره‌های روز تنظیم می‌کند. size باید یک عدد ده‌دهی باشد. اندازه‌های پیش‌فرض معادل مشخص کردن عبارت زیر هستند:
-sthd 14 -se 8

به عبارت دیگر، فونت‌های سربرگ و شماره‌های روز ۱۴ پوینتی بوده و مدخل‌های تقویم با متن ۸ پوینتی چاپ می‌شوند.

اندازهٔ حاشیهٔ سفید خالی را در هر خانهٔ تقویم روی size پوینت تنظیم می‌کند. اندازهٔ پیش‌فرض حاشیه ۶ پوینت یا ۱/۱۲ اینچ است..TP -t size ضخامت خطوط مشکی شبکه تقویم را تنظیم می‌کند. مقدار پیش‌فرض ۱ است که ضخامت خطی برابر با یک پوینت (۱/۷۲ اینچ) را تعیین می‌کند.
-o[lrtb] size
حاشیه‌های چپ (left)، راست (right)، بالا (top) و/یا پایین (bottom) را به میزان size پوینت تنظیم می‌کند. تنها برای این گزینه، size باید یک عدد صحیح باشد و اندازه حاشیه را با واحد ۱/۷۲ اینچ نشان می‌دهد. اندازه پیش‌فرض حاشیه‌ها ۳۶ است که نمایانگر حاشیه نیم‌اینچی است. اگر قصد دارید صفحه تقویم را برای قرار دادن در زونکن پانچ کنید، ممکن است بخواهید حاشیه چپ را به یک اینچ افزایش دهید. در این حالت، برای به دست آوردن خروجی مناسب، باید اندازه قلم سربرگ را نیز به ۱۲ پوینت کاهش دهید:
# This gives good results for putting into a binder
rem2ps -ol 72 -sh 12

برای استفاده از rem2ps، باید خروجی Remind همراه با گزینه -p را به rem2ps لوله‌کشی (pipe) کنید و سپس نتیجه را به یک چاپگر بفرستید. این سازوکار به ساده‌ترین شکل با چند مثال نشان داده می‌شود:

remind -p12 /dev/null 1 jan 1994 | rem2ps | lpr -Plaser

این مثال یک تقویم خالی برای کل سال ۱۹۹۴ ایجاد می‌کند و آن را به چاپگری با نام «laser» ارسال می‌نماید.

remind -p ~/.reminders | rem2ps -l -sd 18 > cal.ps

این یادآور یک تقویم برای ماه جاری ایجاد کرده و ورودی‌ها را از فایل یادآور «~/.reminders» درون آن پر می‌کند. تقویم در حالت افقی (landscape) با اندازه قلم ۱۸ برای شماره روزها تولید می‌شود. نتیجه در فایل PostScript با نام «cal.ps» ذخیره می‌گردد.

متغیرهای زیر برای یادآورهای نوع PS و PSFILE در دسترس هستند. (این مطالب در صفحه راهنمای Remind نیز تکرار شده است.)

عرض خطوط مشکی شبکه تشکیل‌دهنده تقویم.
فاصله حاشیه بین مرکز خطوط شبکه و فضای مورد استفاده برای چاپ ورودی‌های تقویم. این حاشیه معمولاً یک فضای خالی است.
عرض و ارتفاع هر خانه تقویم، از مرکز تا مرکز خطوط مشکی شبکه.
ارتفاع از مرکز خط مشکی پایین شبکه تا بالای ناحیه عادی ورودی تقویم. فضای بین این نقطه تا بالای خانه، تنها برای رسم شماره روز استفاده می‌شود.
/DayFont، /TitleFont، /EntryFont، /SmallFont و /HeadFont
قلم‌هایی که به ترتیب برای رسم شماره روزها، عنوان ماه و سال، ورودی‌های تقویم، تقویم‌های کوچک، و سربرگ روزهای هفته استفاده می‌شوند.
اندازه قلم‌های فوق. (اندازه قلم تقویم کوچک در اینجا تعریف نشده است.) برای نمونه، اگر می‌خواهید تاریخ عبری را در کنار شماره روز عادی در تقویم چاپ کنید، از دستور زیر استفاده نمایید:
REM PS Border BoxHeight Border sub DaySize sub moveto \
   /DayFont findfont DaySize scalefont setfont \
   ([hebday(today())] [hebmon(today())]) show
توجه کنید که چگونه /DayFont و DaySize به کار گرفته شده‌اند.

توجه داشته باشید که در صورت نوشتن کد PostScript، احتمال تولید فایل‌های نامعتبر PostScript وجود دارد. همواره پیش از ارسال پرونده به چاپگر، کد PostScript خود را به دقت با یک نمایش‌دهنده PostScript بیازمایید. نباید از هیچ‌گونه کامنت ساختاردهی سند (document structuring comments) در کد PostScript خود استفاده کنید.

علاوه بر این، پیش از رسم هر صفحه تقویم، rem2ps کد PostScript زیر را صادر می‌کند:

save (mon) (yr) PreCal restore

که در آن mon و yr ماه و سال صفحه تقویم هستند. رویه (procedure) پیش‌فرض PreCal صرفاً آرگومان‌ها را خارج (pop) کرده و کاری انجام نمی‌دهد. با این حال، می‌توانید یک تابع PreCal در فایل مقدمه (prologue) خود تعریف کنید تا هر عملیاتی که مایلید را انجام دهد؛ برای نمونه، می‌تواند یک پس‌زمینه برای کل تقویم رسم کند.

در چارچوب رویه PreCal، شرایط زیر برقرار است:

مبدأ مختصات PostScript در گوشه پایین و سمت چپ صفحه قرار دارد و واحدهای PostScript معادل ۱/۷۲ اینچ معتبر هستند.
متغیرهای MinX، MinY، MaxX و MaxY کادر محدودکننده (bounding box) که تقویم درون آن رسم خواهد شد را مشخص می‌کنند.
متغیرهای قلم و اندازه قلم، و همچنین متغیرهای Border و LineWidth که پیش‌تر شرح داده شدند، معتبر هستند.

برای نمونه، فایلی با نام «myprolog» بسازید که محتویات آن به شرح زیر باشد:

/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

از آن فایل به همراه گزینه -p در دستور rem2ps استفاده کنید تا تقویم‌هایی تولید شوند که سال و ماه با حروف بزرگ خاکستری‌رنگ در پس‌زمینه آنها نقش بسته است. گزینهٔ -p یک قالب تبادل دادهٔ قدیمی‌تر و ساده‌تر است که توسط Remind برای برقراری ارتباط با back-endها استفاده می‌شود. توصیه می‌شود back-endهای جدید ترجیحاً از قالب جدیدتر -pp پشتیبانی کنند، هرچند در صورتی که قالب قدیمی اطلاعات کافی را برای کارکرد صحیح در بر داشته باشد، پشتیبانی از قالب قدیمی‌تر -p نیز توصیه می‌شود.

دستور Remind -p خطوط زیر را به خروجی استاندارد ارسال می‌کند. این اطلاعات به‌گونه‌ای طراحی شده‌اند که به سادگی توسط برنامه‌های back-end تجزیه شوند:

# translations
این خط نشان می‌دهد که خط بعدی جدول ترجمه (translation table) خواهد بود. خط پس از # translations یک شیء JSON (در یک خط واحد) است که شامل تمام مدخل‌های جدول ترجمه می‌باشد. back-endهایی که نیازی به جدول ترجمه ندارند می‌توانند به سادگی خط بعدی را خوانده و آن را نادیده بگیرند.
اگر Remind داده‌های چندین ماه را ارسال کند، تنها ماه نخست شامل جدول ترجمه خواهد بود.
# rem2ps begin
این خط نشان‌دهندهٔ آغاز داده‌های تقویم است. back-endها می‌توانند برای اطمینان از دریافت اطلاعات درست، به دنبال این خط بگردند.
در این خط، month_name نام ماهی است که اطلاعات تقویم آن در ادامه خواهد آمد. num_days تعداد روزهای این ماه است. first_day روز هفته برای نخستین روز ماه است (۰ = یکشنبه، ۱ = دوشنبه، ۶ = شنبه). و monday_first در صورتی که پرچم -m به Remind داده شده باشد ۱، و در غیر این صورت ۰ است. تمام این اطلاعات به این منظور ارائه می‌شوند که back-endها نیازی به محاسبات تاریخ نداشته باشند.

توجه داشته باشید که تمام فاصله‌ها در month_name با زیرخط (underscore) جایگزین می‌شوند. back-endها باید این جایگزینی را به حالت اولیه برگردانند.

این خط شامل نام روزها است که با فاصله از هم جدا شده‌اند، به همان زبانی که Remind برای آن کامپایل شده است. این اطلاعات می‌تواند توسط back-endها برای یادداشت‌نویسی تقویم‌ها استفاده شود و بدین معناست که نیازی نیست آن‌ها برای زبانی خاص توسعه داده شوند.

توجه داشته باشید که تمام فاصله‌ها در نام روزها با زیرخط جایگزین می‌شوند. back-endها باید این جایگزینی را به حالت اولیه برگردانند.

نام ماه بعدی و تعداد روزهای آن.
نام ماه قبلی و تعداد روزهای آن. خطوط next_mon و prev_mon می‌توانند برای تولید تقویم‌های کوچک درون‌نما (inset) برای ماه‌های بعد و قبل استفاده شوند.

باقی‌ماندهٔ داده‌ها شامل مدخل‌های تقویم در قالب زیر است:

yyyy/mm/dd special tag dur time body

در اینجا، yyyy سال، mm ماه (۰۱-۱۲) و dd روز ماه است. توجه داشته باشید که اجزای تاریخ همواره با "/" از هم جدا می‌شوند، حتی اگر جداکنندهٔ تاریخ در Remind بر روی "-" تنظیم شده باشد. استفادهٔ یکپارچه از "/" برای تسهیل فرآیند تجزیه طراحی شده است.

مقدار special رشته‌ای است که برای ارتباطات "خارج از باند" (out-of-band) با back-endها استفاده می‌شود. اگر یادآور یک یادآور معمولی باشد، special برابر "*" است. بخش پشتیِ rem2ps مقادیر ویژهٔ PostScript و PSFile را می‌شناسد. سایر back-endها ممکن است مقادیر ویژهٔ دیگری را شناسایی کنند. یک back-end باید یادآوری دارای مقدار ویژه را که نمی‌شناسد، به‌طور خاموش نادیده بگیرد.

مقدار tag همان برچسبی است که کاربر با عبارت TAG مشخص کرده است، یا اگر برچسبی مشخص نشده باشد برابر "*" خواهد بود. اگر بیش از یک عبارت TAG وجود داشته باشد، برچسب‌ها در یک فهرست جداشده با کاما ظاهر می‌شوند. برای نمونه، دستور REM TAG foo TAG bar TAG quux منجر به مقدار foo,bar,quux در فیلد tag خواهد شد.

مقدار dur مقدار DURATION به دقیقه است، یا اگر هیچ مدت‌زمانی تعیین نشده باشد برابر "*".

مقدار time زمان یادآور به صورت دقیقه‌های گذشته از نیمه‌شب است، یا اگر یادآور زمان‌بندی‌شده نباشد برابر "*".

مقدار body متن بدنهٔ یادآور است.

نسخه‌های آیندهٔ Remind ممکن است کلیدهای بیشتری به شیء JSON بیفزایند. بخش‌های پشتی باید کلیدهایی را که نمی‌شناسند نادیده بگیرند.

پس از صادر شدن تمام یادآورهای یک ماه، Remind خط زیر را ارسال می‌کند:

# rem2ps end

با این حال، back-endها باید تا رسیدن به EOF به خواندن ادامه دهند، زیرا ممکن است داده‌های بیشتری برای ماه‌های بعدی در راه باشد.

اگر گزینهٔ -l را به remind بدهید، ممکن است قبل از یادآورها خطی مشابه این قرار گیرد:

# fileinfo lineno filename

کلمهٔ fileinfo به‌صورت لفظی (literal) است؛ lineno و filename شماره خط و نام فایلی که حاوی یادآور است را مشخص می‌کنند. back-endهایی که به این اطلاعات نیازی ندارند، باید خطوطی را که با "#" آغاز می‌شوند نادیده بگیرند (البته به جز خطوط مربوط به # rem2ps). دستور Remind -pp خطوط زیر را به خروجی استاندارد ارسال می‌کند. این خطوط به گونه‌ای طراحی شده‌اند که به سادگی تجزیه شوند، اما حاوی اطلاعات بسیار بیشتری نسبت به خروجی سبک قدیمی remind -p هستند. این اطلاعات اضافی شامل بازنمایی دستور «REM» تجزیه‌شده است که به مبدل‌ها اجازه می‌دهد مفهوم و معنای یک یادآور را بهتر حفظ کنند. برای نمونه، این قالب اطلاعات کافی را منتقل می‌کند تا یک بک‌اند بتواند (در بسیاری از موارد) قاعده تکرار یک یادآور را مشخص کند، به جای آنکه صرفاً با هر یادآور مانند یک رویداد یک‌باره برخورد نماید.

خطوط ارسال‌شده توسط remind -pp به شرح زیر هستند:

# translations
این خط مشخص می‌کند که خط بعدی جدول ترجمه خواهد بود. خط پس از # translations یک شیء JSON (در یک خط مستقل) است که تمام ورودی‌های جدول ترجمه را در خود دارد. بک‌اندهایی که به جدول ترجمه نیازی ندارند می‌توانند به سادگی آن را خوانده و نادیده بگیرند.
اگر Remind داده‌ها را برای چندین ماه ارسال کند، تنها ماه نخست شامل جدول ترجمه خواهد بود.
# rem2ps2 begin
این خط آغاز داده‌های گاه‌شمار را مشخص می‌کند. بک‌اندها می‌توانند برای اطمینان از دریافت اطلاعات صحیح به دنبال آن بگردند. به عدد «2» بعد از «rem2ps» توجه کنید که این قالب را از قالب قدیمی‌تر -p متمایز می‌سازد.
همانند قالب -p
همانند قالب -p
همانند قالب -p
همانند قالب -p

ورودی‌های گاه‌شمار (CALENDAR ENTRIES)

داده‌های باقی‌مانده شامل ورودی‌های گاه‌شمار است که به عنوان یک شیء JSON در یک خط بیان شده‌اند. هر خط این‌چنینی با «{» آغاز می‌شود و یک شیء معتبر JSON خواهد بود. کلیدهایی که ممکن است در این شیء JSON حضور داشته باشند به شرح زیر است:

کلید date همیشه وجود خواهد داشت؛ این مقدار تاریخ فعال‌سازی یادآور است که در قالب یک رشته با ساختار YYYY-MM-DD بیان می‌شود.
نام فایلی که یادآور در آن یافت شده است.
شماره خطی در فایل که یادآور در آن یافت شده است.
اگر یادآوری به دلیل استفاده از کاراکتر بک‌اسلش برای شکستن خط در چند خط گسترش یافته باشد، ورودی lineno خط آخر یادآور خواهد بود؛ و ورودی lineno_start خط اول آن است. اگر یک یادآور در چند خط گسترش نیافته باشد، تنها ورودی lineno حضور خواهد داشت؛ در این حالت ورودی lineno_start وجود نخواهد داشت.
اگر یادآور شامل یک عبارت غیرثابت بوده که برای تعیین تاریخ فعال‌سازی باید ارزیابی می‌شده است، این کلید با مقدار 1 حضور خواهد داشت. در صورت وجود این کلید، اتکا به معنای تکرار یا حتی مفاهیم هر بخشی از یادآور تجزیه‌شده برای یک بک‌اند ناامن خواهد بود، زیرا ممکن است به شیوه‌ای محاسبه شده باشند که در قالب JSON قابل بیان نباشد.
اگر یادآور درون یک یا چند عبارت IF یا ELSE قرار داشته باشد، این کلید حضور خواهد داشت و مقدار آن تعداد IFهای تودرتو از سطح بالا تا یادآور خواهد بود. بک‌اندها باید در تفسیر معنای تکرار یادآورهایی که درون یک بلوک IF یا ELSE قرار دارند احتیاط کنند.
اگر یادآور یک یادآور SPECIAL باشد، کلید passthru حضور خواهد داشت و مقدار آن نوع SPECIAL (مانند SHADE، COLOR، MOON و غیره) خواهد بود.
اگر عبارات TAG حضور داشته باشند، کلید tags وجود خواهد داشت و شامل فهرستی از برچسب‌ها خواهد بود که با کاما از هم جدا شده‌اند.
اگر هرگونه عبارت INFO وجود داشته باشد، کلید info وجود خواهد داشت. مقدار آن یک هش از جفت‌های کلید-مقدار info خواهد بود. هر کلید، سرایندِ یک رشته INFO است که تماماً به حروف کوچک تبدیل شده است. مقدار نیز همان مقدار به دست آمده از رشته INFO است.

برای نمونه، دستور REM زیر:

REM INFO "Location: Boardroom" INFO "Summary: None" MSG whatever

هش info زیر را تولید خواهد کرد:

"info" : {
    "location" : "Boardroom",
    "summary" : "None"
},
اگر عبارت غیرخالی TZ وجود داشته باشد، این کلید شامل نام منطقه زمانی خواهد بود.
اگر عبارت AT وجود داشته باشد، این کلید شامل زمان عبارت AT بر حسب دقیقه پس از نیمه‌شب در منطقه زمانی پیش‌فرض سیستم خواهد بود.
اگر عبارت TZ وجود داشته باشد، این کلید شامل زمان عبارت AT بر حسب دقیقه پس از نیمه‌شب در منطقه زمانی تعیین‌شده توسط TZ خواهد بود.
اگر یک دلتای زمانی (+n بعد از یک عبارت AT) وجود داشته باشد، این کلید حاوی مقدار دلتا بر حسب دقیقه است.
اگر تکرار زمانی (*n بعد از یک عبارت AT) وجود داشته باشد، این کلید حاوی مقدار تکرار بر حسب دقیقه است.
اگر عبارت DURATION وجود داشته باشد، این کلید شامل مدت رویداد بر حسب دقیقه است.
اگر عبارت DURATION وجود داشته باشد، این کلید شامل مدت زمان امروز بر حسب دقیقه است. برای بحث پیرامون تفاوت duration با event duration، به صفحه راهنمای remind(1) بخش «MULTI-DAY EVENTS» مراجعه کنید.
اگر عبارت AT وجود داشته باشد، این کلید شامل زمان آغاز رویداد با قالب YYYY-MM-DDTHH:MM در منطقه زمانی پیش‌فرض سیستم خواهد بود.
اگر عبارت TZ وجود داشته باشد، این کلید شامل زمان آغاز رویداد با قالب YYYY-MM-DDTHH:MM در منطقه زمانی مشخص‌شده توسط TZ خواهد بود.
اگر یادآور دارای یک عبارت «back» باشد (-n یا --n)، این کلید شامل مقدار back خواهد بود. اگر مقدار «back» برابر با -n باشد، مقدار مثبت خواهد بود؛ اگر --n باشد، مقدار منفی خواهد بود.
اگر یادآور دارای یک عبارت «delta» باشد (+n یا ++n)، این کلید شامل مقدار دلتا خواهد بود. اگر مقدار «delta» برابر با +n باشد، مقدار مثبت خواهد بود؛ اگر ++n باشد، مقدار منفی خواهد بود.
اگر یادآور شامل تمامی مؤلفه‌های روز، ماه و سال باشد، آنگاه trigbase تاریخی است که از این مؤلفه‌ها ساخته شده و با قالب YYYY-MM-DD بیان می‌شود.
اگر یادآور دارای یک عبارت «repeat» باشد (*n)، این کلید حاوی مقدار تکرار خواهد بود.
اگر یادآور شامل کلیدواژه‌های SKIP، BEFORE یا AFTER باشد، این کلید شامل آن کلیدواژه خواهد بود.
اگر یادآور دارای یک کلیدواژه محلی OMIT باشد، این کلید حضور خواهد داشت. مقدار آن آرایه‌ای از نام‌های انگلیسی روزهایی است که OMIT (حذف) شده‌اند.
اگر یادآور شامل یک یا چند روز از هفته باشد، این کلید حضور خواهد داشت. مقدار آن آرایه‌ای از نام‌های انگلیسی روزهای هفته است که در یادآور ذکر شده‌اند..TP d n اگر روز ماه در مشخصات یادآور وجود داشته باشد، این کلید موجود خواهد بود و مقدار آن شماره روز خواهد بود.
اگر ماه در مشخصات یادآور وجود داشته باشد، این کلید موجود خواهد بود و مقدار آن شماره ماه خواهد بود.
اگر سال در مشخصات یادآور وجود داشته باشد، این کلید موجود خواهد بود و مقدار آن سال خواهد بود.
اگر یادآور حاوی بند UNTIL یا THROUGH باشد، این کلید موجود خواهد بود. مقدار آن رشته‌ای به شکل YYYY-MM-DD خواهد بود.
اگر یادآور حاوی کلمه کلیدی ONCE باشد، این کلید با مقدار 1 موجود خواهد بود.
اگر یادآور حاوی کلمه کلیدی SCANFROM باشد، این کلید موجود خواهد بود و مقدار آن برای یک SCANFROM مطلق، رشته‌ای به شکل YYYY-MM-DD، یا برای یک scanfrom نسبی، یک عدد صحیح منفی به شکل -n خواهد بود.
اگر یادآور حاوی کلمه کلیدی FROM باشد، این کلید موجود خواهد بود و مقدار آن رشته‌ای به شکل YYYY-MM-DD خواهد بود.
اگر یادآور یک یادآور TODO باشد، flag عدد صحیح 1 خواهد بود؛ در غیر این صورت، عدد صحیح صفر خواهد بود.
اگر یادآور دارای تاریخ COMPLETE-THROUGH باشد، این کلید موجود خواهد بود و مقدار آن رشته‌ای به شکل YYYY-MM-DD خواهد بود.
اگر یادآور دارای بند MAX-OVERDUE باشد، این کلید موجود خواهد بود و مقدار آن آرگومان عدد صحیح MAX-OVERDUE خواهد بود.
اولویت یادآور. همیشه موجود است؛ اگر هیچ کلمه کلیدی PRIORITY مشخص نشده باشد، یادآور دارای اولویت پیش‌فرض 5000 خواهد بود.
برای دستور ویژه SHADE یا COLOR، مؤلفه رنگ قرمز.
برای دستور ویژه SHADE یا COLOR، مؤلفه رنگ سبز.
برای دستور ویژه SHADE یا COLOR، مؤلفه رنگ آبی.
بدنه یادآور برای صدور. همیشه موجود است.
متن مناسب برای قرار گرفتن در گاه‌شمار. تنها زمانی موجود است که بدنه اصلی حاوی توالی‌های %"...%" باشد و از تغییردهنده "q" همراه با پرچم -pp... در Remind استفاده شده باشد.
بدنه «ساده» یادآور با حذف تمام توالی‌های %"...%". اگر بک‌اند شما برای رسم یک تقویم طراحی شده است، در صورت وجود باید از calendar_body استفاده کند. در غیر این صورت، اگر plain_body موجود بود باید از آن استفاده کرده، و در صورت عدم وجود، به سراغ body برود.
بدنه «خام» یادآور، پیش از هرگونه الحاق عبارت یا پردازش توالی‌های جایگزینی. اگر بدنه خام با بدنه پردازش‌شده یکسان باشد، این کلید موجود نخواهد بود.

پس از صدور یادآورهای یک ماه کامل، Remind این خط را صادر می‌کند:

# rem2ps2 end

با این حال، بک‌اندها باید خواندن را تا رسیدن به EOF ادامه دهند تا در صورت وجود، داده‌های ماه‌های بعدی را نیز دریافت کنند.

دستورهای Remind -ppp و remind -p+ خروجی JSON خالص تولید می‌کنند. قالب به شرح زیر است:

Remind یک آرایهٔ JSON خروجی می‌دهد. هر عنصر آرایه یک توصیف‌گر ماه یا در مورد remind -p+ یک توصیف‌گر هفته است.

هر توصیف‌گر یک شیء JSON با عناصر زیر است:

نوع تقویم؛ monthly (ماهانه) یا weekly (هفتگی). نسخه‌های قدیمی‌تر Remind شامل عنصر caltype نبودند، بنابراین نبود caltype باید به عنوان monthly در نظر گرفته شود.
نام ماه. فقط در انواع تقویم ماهانه موجود است.
سال. فقط در انواع تقویم ماهانه موجود است.
تعداد روزهای ماه جاری. فقط در انواع تقویم ماهانه موجود است.
روز هفته برای نخستین روز ماه (0 = یکشنبه، 1 = دوشنبه، 6 = شنبه). فقط در انواع تقویم ماهانه موجود است.
شاخصی مبنی بر این که هفتهٔ تقویم باید با یکشنبه (n=0) یا دوشنبه (n=1) آغاز شود. فقط در انواع تقویم ماهانه موجود است.
یک آرایهٔ هفت‌عنصری از نام روزها؛ هر عنصر رشته‌ای است که نام روزها را از یکشنبه تا شنبه نشان می‌دهد. فقط در انواع تقویم ماهانه موجود است.
نام ماه پیشین. فقط در انواع تقویم ماهانه موجود است.
تعداد روزهای ماه پیشین. فقط در انواع تقویم ماهانه موجود است.
سالِ ماه پیشین. (یکسان با year مگر این‌که ماه جاری ژانویه باشد.) فقط در انواع تقویم ماهانه موجود است.
نام ماه پسین. فقط در انواع تقویم ماهانه موجود است.
تعداد روزهای ماه پسین. فقط در انواع تقویم ماهانه موجود است.
سالِ ماه پسین. (یکسان با year مگر این‌که ماه جاری دسامبر باشد.) فقط در انواع تقویم ماهانه موجود است.
تخلیهٔ کامل جدول ترجمهٔ Remind. در خروجیِ مربوط به چندین ماه یا هفته، جدول ترجمه تنها همراه با ماه یا هفتهٔ نخست گنجانده می‌شود. در هر دو نوع تقویم هفتگی و ماهانه موجود است.
کلید entries که در هر دو نوع تقویم هفتگی و ماهانه حضور دارد، شامل آرایه‌ای از مدخل‌های تقویم است؛ هر مدخل یک شیء JSON است که ساختاری یکسان با شرح داده‌شده در بخش CALENDAR ENTRIES در بخش -PP FORMAT دارد، با تفاوت زیر: در حالت -PP، اگر یک یادآور دارای نشانگرهای %" باشد، تنها متن میان نشانگرها در عنصر body گنجانده می‌شود. در حالت -PPP، کل متن شامل نشانگرهای %" گنجانده می‌شود و در صورت تمایل، استخراج بخش میان نشانگرها بر عهدهٔ back-end خواهد بود.
کلید dates که فقط در انواع تقویم هفتگی موجود است، شامل هفت مدخل است؛ یکی برای هر ستون در تقویم هفتگی. هر مدخل یک شیء JSON شامل جفت‌های کلید/مقدار زیر است:
تاریخ ستون.
شمارهٔ روز در ستون.
نام روز هفته (احتمالاً بومی‌سازی‌شده).
نام ماه (احتمالاً بومی‌سازی‌شده).
سال. برنامه rem2ps توسط Dianne Skoll <dianne@skoll.ca> نوشته شده است.

برخلاف Remind، تمام گزینه‌های rem2ps به حروف بزرگ و کوچک حساس هستند. هر زمان که نام یا اندازه قلم، ضخامت خط یا پهنای کادر را مشخص کنید، با آن مانند یک رشته رفتار شده و مستقیماً به مفسر PostScript ارسال می‌شود. بنابراین، اگر قلم‌ها یا اندازه‌های نامعتبر تعیین کنید، rem2ps خطایی اعلام نمی‌کند، اما خروجی PostScript حاصل احتمالاً کار نخواهد کرد.

باید اطمینان حاصل کنید که مقادیر ارائه‌شده برای عرض حاشیه‌ها معقول باشند. اگر آن‌ها برای اندازه رسانه (کاغذ) بیش از حد بزرگ باشند، rem2ps خطایی نمی‌گیرد، اما در این حالت نیز خروجی PostScript احتمالاً کار نخواهد کرد.

https://dianne.skoll.ca/projects/remind

remind، rem2pdf، rem2html، tkremind.

2026-06-05 Remind