سلام
با تشکر از راهحلهای دوستان عزیزم جناب باغبان و سیدجواد عزیز.
همانطور که جناب رضویان فرمودند بستهی xparse
نیز امکانات جالبی در این زمینه دارد. به خاطر معرفی بیشتر این بسته به کاربر من از امکانات این بسته استفاده میکنم.
در این بسته به کمک ساختار زیر میتوان ماکروهایی با تنوع زیادی ساخت:
\DeclareDocumentCommand
به صورت زیر میتوان ماکرویی با دو آرگومان پیشفرض One
و Two
ساخت:
\DeclareDocumentCommand{\FCMD}{O{\textcolor{red}{One}\qquad} O{\textcolor{blue}{Two}}}{\textcolor{purple}{#1}~\textcolor{orange}{#2}}
در این ساختار O{default}
عملیات ایجاد آرگومان پیشفرض را انجام میدهد
(optional argument
). حال ماکروی \FCMD
را به صورتهای زیر بهکار میبریم:
\FCMD \\
\FCMD[New One]\\
\FCMD[New One][]\\
\FCMD[][]\\
\FCMD[New One][New Two]
دریافتی ما به صورت زیر خواهد بود:
امکان ایجاد یک آرگومان استاندارد اجباری (mandatory
) با درج m
نیز مطابق زیر فراهم است که میتواند یک یا چند توکن باشد:
\DeclareDocumentCommand{\FFCMD}{O{\textcolor{red}{One}} m O{\textcolor{blue}{Two}}}{\textcolor{purple}{#1}~#2~\textcolor{orange}{#3}}
حال ماکروی \FFCMD
را به صورتهای زیر بهکار میبریم:
\FFCMD{Next} \\
\FFCMD[New One]{Next}\\
\FFCMD[New One]{Next}[]\\
\FFCMD[]{}[]\\
\FFCMD[]{Alone}[]\\
\FFCMD[New One]{Next}[New Two]
دریافتی ما به صورت زیر خواهد بود:
راهنمای این بسته را میتوانید از اینجا تهیه کنید.
از بستهی xcolor
صرفاً جهت ایجاد رنگ برای نمایان کردن بیشتر آرگومانها بهره گرفتهام.
تمام دستورات بالا نیز مطابق زیر است:
\documentclass{article}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage[logo=on,pdfinfo=on,
inlinemathdigits=persian,%
displaymathdigits=persian%
]{xepersian}
\settextfont[Scale=1.2]{IRZar}
\settextdigitfont[Scale=.9]{Yas}
\setmathdigitfont[Scale=.9]{PGaramond}
\DeclareDocumentCommand{\FCMD}{O{\textcolor{red}{One}\qquad} O{\textcolor{blue}{Two}}}{\textcolor{purple}{#1}~\textcolor{orange}{#2}}
\setlength{\parindent}{0pt}
\begin{document}\noindent
\null\vfill\latin
\FCMD \\
\FCMD[New One]\\
\FCMD[New One][]\\
\FCMD[][]\\
\FCMD[New One][New Two]
\DeclareDocumentCommand{\FFCMD}{O{\textcolor{red}{One}} m O{\textcolor{blue}{Two}}}{\textcolor{purple}{#1}~#2~\textcolor{orange}{#3}}
\FFCMD{Next} \\
\FFCMD[New One]{Next}\\
\FFCMD[New One]{Next}[]\\
\FFCMD[]{}[]\\
\FFCMD[]{Alone}[]\\
\FFCMD[New One]{Next}[New Two]
\end{document}
موفق باشید.