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

قرار دادن شکل یا عکس در لاتک و زی پرشین
برای قرار دادن یک شکل یا عکس معمولی در لاتک باید ابتدا بسته graphicx را فراخوانی و سپس از دستور
\includegraphics[...]{...}
استفاده کنید. در ادامه این نوشته برای هر سه کلمه عکس، شکل و تصویر از کلمه شکل استفاده میکنیم. در آرگومان اختیاری آن میتوانید پهنا، ارتفاع و مقیاس شکل را تعیین کنید. به عنوان مثال اگر میخواهید پهنای شکل موردنظرتان ۵ سانتیمتر باشد، میتوانید از [width=5cm] استفاده کنید یا اگر میخواهید پهنای عکس هفتدهم پهنای بلوک متن باشد، از [width=.7\textwidth] یا اگر میخواهید شکلتان را با مقیاس سهدهم اندازه واقعی آن در متن بگذارید، از [scale=.3] استفاده کنید. در آرگومان اجباری باید اسم شکل را بنویسید و اگر یک شکل را در فرمتهای مختلفی مثل jpg یا png دارید، پسوند آن را هم بنویسید. نکته مهمی که در اینجا وجود دارد، این است که این شکل باید در همان پوشهای که فایل texتان قرار دارد، باشد. به عبارت دیگر در کنار فایل تک باشد. با این توضیحات اگر اسم شکلتان bird است، میتوانید آن را به صورت زیر در لاتک قرار دهید:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis \includegraphics[width=6mm]{bird} aliquam elementum nulla id justo aliquam consectetur. Aenean vitae nunc a neque lobortis blandit eget non dolor. \end{document}
خروجی:

قرار دادن شکل در لاتک با دستور includegraphics
اگر میخواهید شکلتان در یک خط جداگانه باشد، کافی است قبل و بعد از دستور \includegraphics یک خط خالی بگذارید:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis \includegraphics[width=6cm]{bird} aliquamelementum nulla id justo aliquam consectetur. Aenean vitae nunc neque lobortis blandit eget non dolor. \end{document}
خروجی:
راستچین کردن شکل در لاتک
برای قرار دادن شکل در سمت راست صفحه میتوانید شبیه حالت قبلی از دستور \rightline{…} به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis: \rightline{\includegraphics[width=6cm]{bird}} aliquamelementum nulla id justo aliquam consectetur. Aenean vitae nunc neque lobortis blandit eget non dolor. \end{document}
خروجی:
اگر میخواهید شکلتان چپچین و بدون تورفتگی باشد، کافی است از دستور \leftline{…} استفاده کنید.
وسطچین کردن شکل در لاتک
برای وسطچین کردن شکل در لاتک میتوانید از دستور \centerline{…} به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis: \centerline{\includegraphics[width=6cm]{bird}} aliquamelementum nulla id justo aliquam consectetur. Aenean vitae nunc neque lobortis blandit eget non dolor. \end{document}
خروجی:
برای وسطچین کردن شکل علاوه بر دستور بالا میتوانید از دستور \centering هم به صورت زیر استفاده کنید. به خطهای خالی قبل و بعد از دستور \includegraphics دقت کنید. همچنین اگر از آکولادها استفاده نکنیم، محتوای بعد از دستور \centering وسطچین میشوند؛ پس باید محدوده اثر این دستور را مشخص کنیم:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis: {\centering \includegraphics[width=6cm]{bird} } aliquamelementum nulla id justo aliquam consectetur. Aenean vitae nunc neque lobortis blandit eget non dolor. \end{document}
خروجی:
اگر میخواهید قبل و بعد از شکل، یک فضای خالی در خروجی داشته باشید، میتوانید به جای روشهای بالا از محیط center به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis: \begin{center} \includegraphics[width=6cm]{bird} \end{center} aliquamelementum nulla id justo aliquam consectetur. Aenean vitae nunc neque lobortis blandit eget non dolor. \end{document}
خروجی:
اضافه کردن عنوان (کپشن) به شکل در لاتک
برای اضافه کردن عنوان به شکل در لاتک میتوانید از محیط figure و دستور \caption{…} به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \begin{document} Lorem ipsum dolor sit amet marop conse ctetur adipis fjio kmjei cing elit. Sed nec tinci dunt felis: \begin{figure}[!h] \centering \includegraphics[width=6cm]{bird} \caption{A bird in jungle} \end{figure} aliquamelementum nulla id justo aliquam consectetur. Aenean vitae nunc neque lobortis blandit eget non dolor. \end{document}
خروجی:
دقت داشته باشید که در شکل بالا به جای محیط center از دستور \centering استفاده شده است. محیط figure اصطلاحاً یک محیط شناور است؛ یعنی وقتی جسمی در لاتک شناور میشود، در نزدیکی مکان متناظر با مکانش در فایل سورس در خروجی ظاهر میشود؛ اما ممکن است انتخاب کند که کجا هم قرار بگیرد. شناور بودن خاصیت بسیار مفیدی در هنگام صفحهآرایی است؛ چون ممکن است مثلاً شکلی در یک صفحه جا نشود و مجبور شویم آن را به صفحهای دیگر منتقل کنیم. در واژهپردازهای WYSIWYG این کار به صورت دستی انجام میشود؛ اما در لاتک و زیپرشین کافی است از یکی از حروفی که در ادامه میآید، استفاده کنیم: حرف h در جدول بالا به معنای مکان قرارگیری شکل در خروجی پیدیاف است. به عبارت دیگر با گذاشتن حرف h به لاتک میگویید در صورت امکان شکل را در همین جایی که در فایل سورس (تک) آمده، در فایل خروجی هم قرار بده. به جای حرف h میتوان از t به معنای بالای صفحه، b به معنای پایین صفحه و p به معنای یک صفحه اختصاص دادهشده برای شناورها قرار بده. در مورد کاراکتر ! کمی توضیح بیشتر نیاز است:
در لاتک حدود ۱۸ پارامتر وجود دارد که روی نحوه قرارگیری اجسام شناور در صفحه تاثیر میگذارند. به عنوان مثال پارامتر topfraction که مقدار پیشفرضش، 0.7 است، برابر ماکزیمم کسری (درصدی) از صفحه است که اجسام شناور میتوانند در بالای یک صفحه اشغال کنند. حالا وقتی برای محیط figure از ! به صورت \begin{figure}[!t] استفاده میکنید، در واقع به لاتک میگویید که بدون هیچگونه توجهی به آن ۱۸ پارامتر مؤثر در قرارگیری اجسام شناور در صفحه، به حرف من که با آرگومان t به تو میگویم، گوش کن و جسم شناور را بالای صفحه قرار بده؛ حتی اگر آن صفحه، صفحه اول یک فصل باشد و موقع وارد کردن \begin{figure}[t] به لاتک میگویید ضمن در نظر گرفتن آن ۱۸ پارامتر مؤثر در قرارگیری اجسام شناور، اگه برایت امکان دارد و همه چیز اوکی بود، این جسم شناور را بالای صفحه قرار بده. این توضیحات در جدول زیر خلاصه شده است:
کاراکتر | معنی |
---|---|
h | جسم شناور را در اینجا قرار بده. به عبارت دیگر در همین جایی که در سورس میخواهم، در خروجی هم قرار بده (البته ممکن است به حرفتان گوش ندهد!) |
t | جسم شناور را در بالای صفحه قرار بده. |
b | جسم شناور را در پایین صفحه قرار بده. |
p | جسم شناور را در صفحهای که فقط مخصوص اجسام شناور است، قرار بده. |
! | پارامترهای داخلیای که لاتک از آنها برای قرارگیری اجسام شناور استفاده میکند را نادیده بگیر. |
H | جسم شناور را دقیقاً و حتماً در همین جایی که در سورس مشخص کردهام، در خروجی قرار بده. این کاراکتر نیاز به فراخوانی بسته float به صورت \usepackage{float} دارد. |
شمارهگذاری شکلها را لاتک به طور خودکار انجام میدهد و در صورت کم و زیاد شدن تعداد شکلها، شمارهها را بهروزرسانی میکند. همچنین دقت داشته باشید که عنوان یک شکل برخلاف جدول که در بالای آن قرار میگیرد، باید پایین آن قرار بگیرد.
قرار دادن شکل در زی پرشین
گذاشتن شکل در زیپرشین تفاوتی با گذاشتن شکل در لاتک ندارد؛ فقط کافی است بسته زیپرشین را فراخوانی و یک فونت فارسی تعریف کنید. من در اینجا از فونت Yas استفاده میکنم:
\documentclass{article} \usepackage{graphicx} \usepackage{xepersian} \settextfont{Yas} \begin{document} کنون ای خردمند وصف خرد بدین جایگه گفتن اندرخورد. کنون تا چه داری بیار از خرد که گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. \begin{figure}[!h] \centering \includegraphics[width=6cm]{bird} \caption{یک پرنده در جنگل} \end{figure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. \end{document}
خروجی:
ارجاع به شکل در لاتک و زیپرشین
برای ارجاع به شکل در لاتک و زیپرشین کافی است بعد از دستور \caption{…} با استفاده از دستور \label{…} یک برچسب یکتا به جدول اختصاص بدهیم و بعد در هر کجای متن که خواستیم با استفاده از دستور \ref{…} به آن ارجاع بدهیم:
\documentclass{article} \usepackage{graphicx} \usepackage{xepersian} \settextfont{Yas} \begin{document} همانطور که در شکل \ref{vfig1} میبینید، پرندگان این جنگل از ویژگی... \begin{figure}[!h] \centering \includegraphics[width=6cm]{bird} \caption{یک پرنده در جنگل}\label{vfig1} \end{figure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. \end{document}
خروجی:
نکته بسیار مهمی که در بحت ارجاع به شکلها یا عکسها باید به آن توجه شود، این است که ارجاع به شکل در متن باید قبل از قرارگیری خود شکل یا عکس باشد. این حالت برای جدولها نیز باید رعایت شود.
ایجاد فهرست تصاویر یا اشکال در لاتک
برای ایجاد فهرست تصاویر یا اشکال در لاتک و زیپرشین نیازی به کار دستی نیست. لاتک این کار را به طور دقیق انجام میدهد! برای این کار کافی است دستور \listoffigures را در یک جایی از سندتان قرار دهید. بعد از ۲ بار اجرای فایلتان، فهرست تصاویر به طور زیبایی ایجاد و در خروجی چاپ میشود:
\documentclass{article} \usepackage{graphicx} \usepackage{xepersian} \settextfont{Yas} \begin{document} \listoffigures همانطور که در شکل \ref{vfig1} میبینید، پرندگان این جنگل از ویژگی... \begin{figure}[!h] \centering \includegraphics[width=4cm]{bird} \caption{یک پرنده در جنگل}\label{vfig1} \end{figure} \begin{figure}[!h] \centering \includegraphics[width=4cm]{eagle} \caption{یک عقاب در آسمان}\label{vfig2} \end{figure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. \end{document}
خروجی:
اگر دوست دارید «فهرست تصاویر» را به چیزی مثل «فهرست شکلها» تغییر بدهید، کافی است قبل از کد \begin{document} (یا در نسخههای جدید زیپرشین، بعد از آن) دستور زیر را قرار بدهید:
\renewcommand{\listfigurename}{فهرست اشکال}
دستور \caption یک آرگومان اختیاری هم دارد که کاربردهای مختلفی دارد. به عنوان مثال اگر عنوان شکلتان بیشتر از ۱ خط باشد و بخواهید نسخهای کوتاهتر از آن را در فهرست تصاویر قرار دهید، میتوانید آن را در آرگومان اختیاری قرار دهید یا اگر در عنوان شکلی به منبعی ارجاع میدهید و نمیخواهید آن ارجاع در فهرست تصاویر هم نمایان شود، میتوانید قسمت مربوط به ارجاع را فقط داخل آرگومان اجباری بنویسید. به عبارت دیگر، محتوای داخل آرگومان اجباری یا همان {…} در متن و محتوای داخل آرگومان اختیاری یا همان […] در فهرست تصاویر ظاهر میشود. به عبارت سادهتر داریم:
\caption[عنوان شکل در فهرست تصاویر]{عنوان شکل در متن}
گذاشتن عنوان شکل در کنار شکل
برای این کار میتوانید از بسته sidecap و محیط SCfigure به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \usepackage{sidecap} \usepackage{xepersian} \settextfont{Yas} \begin{document} کنون ای خردمند وصف خرد بدین جایگه گفتن اندرخورد. کنون تا چه داری بیار از خرد که گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. \begin{SCfigure}[.9][!h] \centering \caption{خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای ازو شادمانی وزویت غمیست وزویت فزونی وزویت کمیست خرد تیره و مرد روشن روان نباشد همی شادمان یک زمان چه گفت آن خردمند مرد خرد که دانا ز گفتار از برخورد} \includegraphics[width=0.5\textwidth]{bird} \end{SCfigure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. \end{document}
خروجی:
در کد بالا مقدار .9 به این معنی است که پهنای عنوان شکل، نهدهم پهنای خود شکل باشد. مقدار پیشفرض آن، 1 است. علاوه بر این اگر میخواهید جای عنوان و شکل را عوض کنید، کافی است این بسته را به صورت
\usepackage[rightcaption]{sidecap}
به کار ببرید.
قرار دادن دو یا چند شکل مستقل در کنار هم
برای انجام این کار در لاتک میتوانید از محیط figure و ۲ یا چند محیط minipage استفاده کنید؛ اما در زیپرشین طبق این پرسش و پاسخ، به دلیل یکی از باگهای زیتک در حروفچینی دوجهته، ترتیب شکلها در فهرست تصاویر اشتباه میشود. به جای استفاده از محیط minipage میتوانید از روش زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \usepackage{xepersian} \settextfont{Yas} \begin{document} کنون ای خردمند وصف خرد بدین جایگه گفتن اندرخورد. کنون تا چه داری بیار از خرد که گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. \begin{figure}[!h] \vbox{\hbox to \textwidth {% \hskip 0.47\textwidth \hfill \vbox{ \hsize=0.47\textwidth \centering \includegraphics[width=.47\textwidth]{bird} \caption{یک پرنده در جنگل}\label{vfig1}} \hskip-\textwidth \vbox{ \hsize=0.47\textwidth \centering \includegraphics[width=.47\textwidth]{eagle} \caption{یک عقاب در آسمان}\label{vfig2}} \hfill% \hskip 0.47\textwidth}} \end{figure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. \end{document}
خروجی:
قرار دادن دو یا چند شکل وابسته در کنار هم با یک عنوان کلی
برای قرار دادن دو یا چند شکل در کنار هم با عنوانهای مجزا و یک عنوان کلی، چند بسته مختلف وجود دارد. به عنوان مثال میتوانید از بسته subfig و دستور \subfloat به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \usepackage{subfig} \usepackage{xepersian} \settextfont{Yas} \begin{document} کنون ای خردمند وصف خرد بدین جایگه گفتن اندرخورد. کنون تا چه داری بیار از خرد که گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. در شکل \ref{fig1}\subref{fig1a} میبینید که... \begin{figure}[!h] \centering \subfloat[یک پرنده در جنگل]{\label{fig1a}\includegraphics[width=.47\textwidth]{bird}} \qquad \subfloat[یک عقاب در آسمان]{\label{fig1b}\includegraphics[width=.47\textwidth]{eagle}} \caption{یک پرنده و یک عقاب زیبا}\label{fig1} \end{figure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. \end{document}
خروجی:
قرار دادن متن در اطراف شکل
گاهی به دلایلی مثل زیاد بودن تعداد شکلها و صرفهجویی در فضای صفحه ممکن است بخواهید متن را در اطراف شکلها قرار دهید. بدیهی است که این حالت برای شکلهایی مناسب است که پهنای آنها کمتر از پهنای بلوک متن باشد. برای این کار بستههای مختلفی وجود دارد. به عنوان مثال میتوانید از بسته wrapfig به صورت زیر استفاده کنید:
\documentclass{article} \usepackage{graphicx} \usepackage{wrapfig} \usepackage{xepersian} \settextfont{Yas} \begin{document} کنون ای خردمند وصف خرد بدین جایگه گفتن اندرخورد. کنون تا چه داری بیار از خرد که گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای. \begin{wrapfigure}[14]{l}[0mm]{6.5cm} \includegraphics[width=6.5cm]{bird} \caption{یک پرنده در جنگل} \end{wrapfigure} خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. خرد بهتر از هر چه ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو. ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. گوش نیوشنده زو برخورد. همان خویش بیگانه داند ورا. خرد بهتر از هر چه ایزد بداد ستایش خرد را. ایزد بداد ستایش خرد را به از راه داد خرد رهنمای و خرد دلگشای خرد دست گیرد به هر دو سرای. گوش نیوشنده زو برخورد. همان. ایزد بداد ستایش خرد را به از راه داد. خرد رهنمای و خرد دلگشای. خرد دست گیرد به هر دو سرای. گوش نیوشنده زو برخورد بهتر از هر چه ایزد بداد ستایش رهنمای و خرد دلگشای دست گیرد. \end{document}
خروجی:
در کد بالا منظور از 14 تعداد خطهایی است که در سمت راست شکل تحت تاثیر قرار گرفتهاند. منظور از l این است که شکل در سمت چپ صفحه قرار گیرد. برای قرار دادن شکل در سمت راست صفحه کافی است که از r استفاده کنید. 0mm میزان بیرونزدگی شکل از بلوک متن است. 6.5cm داخل آکولاد هم پهنای فضایی است که برای قرار دادن شکل در نظر گرفته شده است. اگر میخواهید فاصله افقی بین متن و شکل را تغییر دهید، کافی است مقدار این فضا را بزرگتر از پهنای شکل در نظر بگیرید و بعد دستور \raggedleft را قبل از دستور \includegraphics قرار دهید تا شکل چپچین بماند. به طور کلی استفاده از محیط wrapfigure نیاز به کمی تنظیم دستی دارد تا متن و شکل کنار آن ظاهر مرتبی داشته باشند.
ادامه دارد…

نظر خود را بنویسید