بستهای همانند tikz
کار خاصی انجام نمیدهند. رسم شکلها را درایور برای شما انجام میدهد. مثلا برای یک رسم ساده این دستورالعملی است که ما به درایور میدهیم
\special{pdf:literal
q 1 j 0 1 0 rg 0 0 1 RG 0 0 10 10 re B Q
}
\bye
به عنوان یک نمونه دیگر بیایید از بسته tikz
استفاده کنید و یک خط ساده بکشید
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[<->] (0,0) -- (2,1);
\end{tikzpicture}
\end{document}
چیزی که ما علاقهمند هستیم بدانیم این هست که دقیقاً چه دستورالعملی به درایور برای رسم این خط داده شده است. بعد از پردازش ما فایل filename.pdf
را میگیریم. این نسخه از pdf
فرمت باینری دارد و به کار ما نمیآید. ما نیاز به فرمت raw
فایل pdf
داریم. برای گرفتن فرمت raw
میتوان از نرمافزاری چون qpdf
استفاده کرد. دستور زیر نسخه raw
فایل pdf
را به ما خواهد داد.
qpdf --stream-data=uncompress test.pdf test-raw.tex
حال اگر فایل test-raw.tex
را باز کنید، (در کنار اطلاعات مفید دیگر) کد زیر را خواهید یافت
q 1 0 0 1 72 720 cm q 1 0 0 1 76.912 -81.348 cm q 0 G 0 g 0.3985 w q 0.40988 0.20493 m 56.28372 28.14186 l S q -0.89442 -0.4472 0.4472 -0.89442 0.40988 0.20493 cm q 0.31879 w [ ] 0.0 d 1 J 1 j -1.19551 1.59401 m -1.09587 0.99626 0.0 0.09961 0.29886 0.0 c 0.0 -0.09961 -1.09587 -0.99626 -1.19551 -1.59401 c S Q Q q 0.89442 0.4472 -0.4472 0.89442 56.28372 28.14186 cm q 0.31879 w [ ] 0.0 d 1 J 1 j -1.19551 1.59401 m -1.09587 0.99626 0.0 0.09961 0.29886 0.0 c 0.0 -0.09961 -1.09587 -0.99626 -1.19551 -1.59401 c S Q Q Q n Q Q BT /F1 9.9626 Tf 231.133 -630.635 Td[<0052>]TJ ET Q
این کد دقیقا همان دستورالعملی است که توسط بسته tikz
به درایور داده شده است. بنابراین بسته tikz
کاری انجام نمیدهد تنها دستورالعمل لازم را با استفاده از دستور بدوی \special
به درایور میدهد. پس برای رسم شکل احتیاجی به بسته tikz
نداریم و تنها کافی است دسترالعمل لازم را به درایور بدهیم.