mkpic(1) DekDoc scripts mkpic(1)

mkpic - واسطی برای ساخت تصاویر با mfpic

mkpic [options] [picfile]

-c,--clean

پاک کردن همه چیز به‌جز فایل ورودی و خروج
-p,--pdfsample
ایجاد فایل pdf حاوی تصاویر نمونه
-f,--font=<font command>;
تنظیم قلم پیش‌فرض برای برچسب‌ها
--[no]box
تولید جعبه‌های قاب‌دار
-V,--version
گزارش شماره نسخه و خروج
-h,--help
نمایش اطلاعات راهنما و خروج
--[no]debug
نمایش اطلاعات اشکال‌زدایی
-l,--log=<logfile>
فایل برای پیام‌های هشدار

در صورت مشخص نشدن فایل ورودی، از بخش DATA استفاده می‌شود.

begin

name xl yl xmin ymin xmax ymax xlabel ylabel

end stop var=value #

comment

arccst

xcenter ycenter xstart ystart theta

arcset

xstart ystart xend yend theta

arccrtt

xcenter ycenter radius theta1 theta2

arc3

x1 y1 x2 y2 x3 y3

xmark

[label1] x1 [label2] x2 ...

Xmark

[label1] x1 [label2] x2 ...

ymark

[label1] y1 [label2] y2 ...

Ymark

[label1] y1 [label2] y2 ...

xdrop

x y

ydrop

x y

xydrop

x y

arrow

x1 y1 x2 y2 label

label

YX x y label

xlabels

YX x y dx label ...

ylabels

YX x y dy label ...

point

x1 y1 x2 y2 ...

dpoint

x1 y1 dx1 dy1 ...

lines

x1 y1 x2 y2 ...

dlines

x1 y1 dx1 dy1 ...

curve

x1 y1 x2 y2 ...

dcurve

x1 y1 dx1 dy1 ...

rect

x1 y1 x2 y2

drect

x y dx dy

dcrect

x y dx dy

crect

x1 y1 x2 y2

arect

xc yc width height theta

bar

x xdev height

func

xmin xmax step expression-in-x

grid

dx dy xgap ygap

hatch

bhat

ehat

برنامهٔ mkpic واسطی ساده برای ایجاد تصاویر کوچک با استفاده از mfpic فراهم می‌کند. بدین منظور باید یک فایل ورودی متشکل از دستورها، هر کدام در یک خط، همراه با پارامترهای جداشده با فاصله ایجاد شود (یا بخش DATA از اسکریپت mkpic را ویرایش کنید که در صورت اجرا بدون فایل ورودی، از آن استفاده می‌شود). برای توضیحات مفصل به فایل‌های mkpicdoc.tex و mkpicdoc.pdf که بخشی از این توزیع هستند، مراجعه کنید.

دستور mkpic دو فایل تولید می‌کند. با فرض یک فایل ورودی به نام picfile که به‌طور پیش‌فرض mkpic است، این فایل‌ها عبارتند از:

picfile.mac

یک فایل ماکرو که شامل دستورات TeX برای هر تصویر خواهد بود
picfile.sty
یک فایل سبک (style) برای latex، که دستورات TeX یکسانی را برای هر تصویر تعریف می‌کند.

با گزینهٔ --pdfsample دو فایل دیگر نیز تولید می‌شوند:

picfile.pdf

یک فایل PDF شامل تمام تصاویر. این به شما امکان می‌دهد نتایج طراحی‌های خود را به آسانی بررسی کنید.

picfile.tex

متن مبدأ TeX که برای ایجاد این فایل PDF استفاده شده است.

در LaTeX، باید \usepackage{picfile} را درج کرده و دستورهایی مانند \Figname را در سورس خود بگنجانید، که در آن name نامی است که به یکی از تصاویر خود در دستور begin مربوط به mkpic اختصاص داده‌اید.

در TeX و ConTeXt، باید \input␣picfile.mac را وارد کرده و دستورهایی مانند \Figname را در سورس خود بیاورید، که در آن name نامی است که به یکی از تصاویر خود در دستور begin مربوط به mkpic اختصاص داده‌اید.

در TeX، باید از دستور \bye (not \end برای اتمام متن مبدأ TeX خود استفاده کنید

برای اطلاع از نحوهٔ اجرای mkpic و TeX، LaTeX، یا ConTeXt، به بخش RUNNING مراجعه کنید.

ساختار کد مبدأ به‌گونه‌ای است که افزودن دستورهای اختصاصی آسان باشد، در حال حاضر دستورهای زیر پیاده‌سازی شده‌اند (آرگومان‌ها در اینجا فهرست نشده‌اند؛ برای آن‌ها به بخش SYNOPSIS مراجعه کنید):

begin, end

هر تصویر با دستور begin آغاز می‌شود و با دستور end خاتمه می‌یابد. دستور begin یک نام برای تصویر و یک دستور tex با همان نام و با پیشوند 'Fig' تعریف می‌کند. دستور حاصل در یک فایل .mac نوشته می‌شود. بنابراین دستور

begin aa ...

نوشتن \def\Figaa{...} را در فایل .mac آغاز می‌کند، و تصویر را می‌توان در یک سند TeX با فراخوانی فایل .mac و استفاده از دستور \Figaa بازتولید کرد.
پارامترهای xl و yl طول محورهای x و y هستند. xlabel و ylabel برچسب‌هایی هستند که در انتهای این محورها قرار می‌گیرند. از یک فاصله برای لغو برچسب‌گذاری، یا از "-" برای جلوگیری از رسم کامل محورها استفاده کنید.
stop
خواندن بیشتر ورودی را متوقف می‌کند. زمانی کاربرد دارد که تصاویر زیادی دارید، اما برای مقاصد آزمایشی مایلید فقط چند تصویر اول را مشاهده کنید.
var=value
متغیر var را به value مقداردهی می‌کند. این متغیر، یا عبارتی شامل آن، می‌تواند به جای هر پارامتر عددی استفاده شود. نام متغیرها می‌تواند شامل حروف کوچک و بزرگ انگلیسی، ارقام یا زیرخط باشد، با این محدودیت که باید با یک حرف شروع شوند و نباید به زیرخط ختم شوند.
#
بیانگر توضیح (کامنت) است
xmark, ymark, Xmark, Ymark
این دستورها یک یا چند برچسب را در امتداد محورهای x یا y، در زیر محور (xmark و ymark) یا بالای آن (Xmark و Ymark) قرار می‌دهند.
برای دستورهای [xXyY]mark، پارامتری که شامل هر نویسه‌ای غیر از [-.0-9] باشد، به عنوان برچسبی برای قرارگیری تفسیر می‌شود (این بدان معناست که در اینجا نمی‌توانید از عبارت‌ها استفاده کنید!) و موقعیت آن در پارامتر بعدی مورد انتظار است. اگر یک پارامتر فقط یک عدد باشد، در آن موقعیت x قرار می‌گیرد. اگر می‌خواهید یک عدد به عنوان برچسب تفسیر شود، آن را در آکوالاد قرار دهید: {1950}.
arccst
(یادآور: center start theta.) کمانی با مرکز xcenter,ycenter رسم می‌کند که از xstart,ystart شروع شده و طول کمان آن theta درجه است.
arcset
(یادآور: start end theta.) کمانی رسم می‌کند که از xstart,ystart آغاز شده، در xend,yend پایان می‌یابد و طول کمان آن theta درجه است.
arccrtt
(یادآور: center radius theta1 theta2.) کمانی با مرکز xcenter,ycenter، شعاع radius رسم می‌کند که از theta1 درجه شروع و در theta2 درجه پایان می‌یابد.
arc3
(یادآور: ۳ نقطه.) کمانی رسم می‌کند که از (x1,y1) آغاز می‌شود، از (x2,y2) می‌گذرد و در (x3,y3) پایان می‌یابد.
xdrop, ydrop, xydrop
این دستورها به‌ترتیب پیکان‌های نقطه‌چینی را به‌صورت عمود بر محور x، محور y و هر دو محور رسم می‌کنند که با نوک پیکان روی محورها پایان می‌یابند.
arrow
پیکانی از (x1,y1) به (x2,y2) رسم می‌کند که در انتهای آن با label برچسب‌گذاری شده است
label
یک برچسب در (x,y) رسم می‌کند. YX نحوهٔ تنظیم آن را مشخص می‌کند: برای Y=t,b,c در جهت y، نقطهٔ (x,y) به‌ترتیب در بالا، پایین یا مرکز برچسب خواهد بود؛ برای X=l,r,c در جهت x، برچسب به‌صورت چپ‌تراز، راست‌تراز یا وسط‌چین روی (x,y) تنظیم می‌شود. بدین ترتیب

label tl 0 0 Hello World!

رشتهٔ "Hello World" را با گوشهٔ پایین چپ آن در (0,0) رسم می‌کند
xlabels
برچسب‌های متعددی را با شروع از (x,y) رسم می‌کند و پس از هر برچسب، x را با dx افزایش می‌دهد. YX: به دستور label مراجعه کنید. برچسب‌ها نباید حاوی فاصله باشند؛ در صورت نیاز به فاصله، به جای آن از - استفاده کنید.
ylabels
مشابه xlabels، اما با این تفاوت که y را با dy افزایش می‌دهد.
point
نقاطی (dots) را در (x1,y1)، (x2,y2) و غیره رسم می‌کند.
dpoint
نقاطی (dots) را با شروع از (x1,y1) و سپس با جابه‌جایی به‌میزان (dx1,dy1)، (dx2,dy2) و غیره رسم می‌کند.
lines
پاره‌خط‌هایی از (x1,y1) به (x2,y2)، (x3,y3) و غیره رسم می‌کند.
dlines
پاره‌خط‌هایی را با شروع از (x1,y1) و سپس با جابه‌جایی به‌میزان (dx1,dy1)، (dx2,dy2) و غیره رسم می‌کند.
curve
یک منحنی بزیه از (x1,y1) به (x2,y2)، (x3,y3) و غیره رسم می‌کند.
dcurve
یک منحنی بزیه را با شروع از (x1,y1) و سپس با جابه‌جایی به‌میزان (dx1,dy1)، (dx2,dy2) و غیره رسم می‌کند.
rect
مستطیلی با نقاط قطری در (x1,y1) و (x2,y2) رسم می‌کند.
drect
مستطیلی با نقاط قطری در (x,y) و (x+dx,y+dy) رسم می‌کند.
crect
مستطیلی با نقاط قطری در (x1,y1) و (x2,y2) را پاک می‌کند.
dcrect
مستطیلی با نقاط قطری در (x,y) و (x+dx,y+dy) را پاک می‌کند.
arect
مستطیلی با پهنای width و ارتفاع height رسم می‌کند؛ وسط قاعدهٔ پایینی در (xc,yc) قرار دارد و خط مرکزی عبوری از (xc,yc) زاویهٔ theta با محور x می‌سازد.
bar
معادل rect␣x-xdev␣0␣x+xdev␣height را رسم می‌کند
func
تابعی را که با expression-in-x داده شده بین xmin و xmax رسم می‌کند که با گام‌های step واحد در جهت محور x حرکت می‌کند. توجه داشته باشید که عبارت expression-in-x توسط Metafont ارزیابی خواهد شد، بنابراین باید از نحو metafont استفاده کنید.
grid
خطوط توری نقطه‌چین را در فواصل dx و dy در جهت‌های x و y رسم می‌کند؛ فواصل بین نقاط به‌ترتیب روی xgap و ygap تنظیم شده‌اند. برای دستیابی به ظاهری مناسب، حتماً از نسبت‌های صحیح dx/xgap و dy/ygap استفاده کنید.
hatch
منحنی بسته‌ای را که در ادامه می‌آید هاشور می‌زند.
bhat
مسیری را آغاز می‌کند که در نهایت بسته خواهد شد، و سپس هاشور می‌خورد.
ehat
مسیری را که با bhat آغاز شده پایان می‌دهد، آن را می‌بندد و سپس هاشور می‌زند.
anything else
هر چیز دیگری به همان صورت در فایل ماکرو درج می‌شود و بنابراین باید یک عبارت معتبر mfpic باشد. زمانی از این حالت استفاده می‌کنید که تنها یک یا چند بار به چنین دستوری نیاز دارید و نیازی به تعریف یک دستور مناسب برای آن نمی‌بینید. نتیجهٔ اجرای mkpic picfile

ایجاد picfile.mac است، که می‌توانید آن را با \input در یک سورس TeX یا ConTeXt وارد کنید، و picfile.sty که می‌تواند با استفاده از دستور \usepackage به یک سورس LaTeX وارد شود.

پس از اجرای TeX (یا LaTeX یا ConTeXt)، فایلی به نام picfile.mf خواهید یافت و باید Metafont را روی آن اجرا کنید که (با فرض اینکه TeX را برای 600 dpi پیکربندی کرده باشید) picfile.600gf را تولید می‌کند. این فایل باید با gftopk به یک فایل pk تبدیل شود. در نهایت، باید TeX را مجدداً، معمولاً دست‌کم دو بار، اجرا کنید. بنابراین برای pdfLaTeX این توالی به صورت زیر است:

mkpic picfile pdflatex file.tex mf picfile gftopk picfile.600gf pdflatex file pdflatex file

در حال حاضر تنها امکان تولید تا ۲۵۶ تصویر وجود دارد. در آینده این مشکل احتمالاً با معرفی بیش از یک فونت و ایجاد نام‌های tex-command که نام قلم در ابتدای آن‌ها قرار دارد، برطرف خواهد شد.

Wybo Dekker (wybodekker@me.com)

منتشرشده تحت مجوز عمومی همگانی گنو (www.gnu.orgcopyleftgpl.html)

October 3, 2025 mkpic version 1.03