پارسی‌لاتک

لاتک LATEX => حروف‌چینی مستندات => نويسنده: فرشاد ترابی در آگوست 26, 2013, 03:28:15 بعد از ظهر

عنوان: آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: فرشاد ترابی در آگوست 26, 2013, 03:28:15 بعد از ظهر
سلام دوستان گرامی

من در فایل پیوست می‌خواهم یک ماکرو بنویسم که ستون‌های یک جدول را در دو حالت مختلف پر بکنه. اما ظاهراً وجود علامت &  در بدنه
ماکروها باعث ایجاد خطا می‌شه. مشکل از کجاست؟
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: سید احمد موسوی در آگوست 26, 2013, 05:52:32 بعد از ظهر
خطای شما رو نمی دونم چیه. ولی خودم طور دیگه نوشتم. البته فکر کنم طرز نوشتن دستورات name و sname شما درست نیشت.
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: فرشاد ترابی در آگوست 26, 2013, 10:32:54 بعد از ظهر
سلام

ممنون از کمک شما. ولی من اصلاً‌ متوجه نمی‌شوم که مشکل کار خودم چیه.
درضمن به نظر خودم فکر نکنم دستورهای name‌ و sname  مشکلی داشته باشند به نظر شما مشکل از چیه؟
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: سید احمد موسوی در آگوست 26, 2013, 10:40:31 بعد از ظهر
به استایل پایان نامه تبریز اگر نگاه کنید زیاد از این روش استفاده شده. اگر اشتباه نکنم طریقه تعریف به این شکل بود.
\def\name#1{\gdef\@name{#1}}
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: فرشاد ترابی در آگوست 27, 2013, 12:03:18 قبل از ظهر
من اصلاً دارم استیل پایان‌نامه تبریز را برای دانشگاه خواجه نصیر تنظیم می‌کنم.
تغییرات زیادی دادم و هیچ‌کجا هم مشکل نداشتم غیر از این یکی که واسم خیلی عجیب بود.
اینجوری درست می‌شه (از کار شما کپی کردم) ولی من هنوز نفهمیدم اشکال کار قبلی از کجاست.
\documentclass{article}


\usepackage{xepersian}
\settextfont{HM XNiloofar}

\def\name{فرشاد}
\def\sname{ترابی}

\def\NAME{نام: \name  & فامیل: \name }
\def\SNAME{نام: \sname  & فامیل: \sname }
\def\Col{
\ifdefined\SNAME%
\SNAME
\else
\NAME
\fi
}


\begin{document}

\begin{tabular}{|c |c|}
آ & ب\\
پ & ت\\
\Col
\end{tabular}


\end{document}
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: سید احمد موسوی در آگوست 27, 2013, 12:58:51 قبل از ظهر
این لینک را ببینید.
http://tex.stackexchange.com/questions/31652/what-is-the-difference-between-ifx-somecommand-undefined-and-ifdefined-somecom (http://tex.stackexchange.com/questions/31652/what-is-the-difference-between-ifx-somecommand-undefined-and-ifdefined-somecom)
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: vafa در آگوست 29, 2013, 03:48:03 بعد از ظهر
نقل قول از: فرشاد ترابی در آگوست 26, 2013, 03:28:15 بعد از ظهر
سلام دوستان گرامی

من در فایل پیوست می‌خواهم یک ماکرو بنویسم که ستون‌های یک جدول را در دو حالت مختلف پر بکنه. اما ظاهراً وجود علامت &  در بدنه
ماکروها باعث ایجاد خطا می‌شه. مشکل از کجاست؟
هیچ موقع از \ifx استفاده نکن چون خیلی اوقات دستوری که داری ممکنه معنای \relax داشته باشه و کاری که با دستورات شرطی انجام می‌دهی غلط از آب دربیاد، به جاش از دستورات \if@bidi@csundef یا \if@bidi@undef استفاده کن. هر چند مشکلی که اینجا داری بی‌ارتباط با این موضوعه و مشکلت ربط به expansion داره.
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: فرشاد ترابی در آگوست 29, 2013, 03:58:19 بعد از ظهر
نقل قول از: وفا کارن‌پهلو در آگوست 29, 2013, 03:48:03 بعد از ظهر
هیچ موقع از \ifx استفاده نکن چون خیلی اوقات دستوری که داری ممکنه معنای \relax داشته باشه و کاری که با دستورات شرطی انجام می‌دهی غلط از آب دربیاد، به جاش از دستورات \if@bidi@csundef یا \if@bidi@undef استفاده کن. هر چند مشکلی که اینجا داری بی‌ارتباط با این موضوعه و مشکلت ربط به expansion داره.

ممنون از راهنمایی گرانقدر شما
اگر امکان داره یک کوچولو راجع به فرق \if@bidi@undef  و \if@bidi@csundef  بدهید یا مرجعی که در آن توضیح داده شده ‌را معرفی کنید.
همچنین چرا روش من مشکل expansion‌ داره؟ خودم تجربم کمه متوجه نمی‌شوم.

ممنون
عنوان: پاسخ : آیا استفاده از & ‌در ماکرو اشکال دارد؟
رسال شده توسط: vafa در آگوست 29, 2013, 04:05:24 بعد از ظهر
نقل قول از: فرشاد ترابی در آگوست 29, 2013, 03:58:19 بعد از ظهر
ممنون از راهنمایی گرانقدر شما
اگر امکان داره یک کوچولو راجع به فرق \if@bidi@undef  و \if@bidi@csundef  بدهید یا مرجعی که در آن توضیح داده شده ‌را معرفی کنید.
همچنین چرا روش من مشکل expansion‌ داره؟ خودم تجربم کمه متوجه نمی‌شوم.

ممنون
هر دو دستور در بسته biditools تعریف شده‌اند که جزئی از کلاف بسته bidi است. راهنمایی وجود نداره چون بسته biditools بسته کاربر نیست بسته‌ای هست که من برای برنامه‌نویسی بسته‌های bidi و xepersian استفاده کردم. نحوه استفاده دو دستور به صورت زیر هست:

\if@bidi@undef{\commandi}{do things if \commandi is undefined}{do things if \commandi is defined}
\if@bidi@csundef{commandi}{do things if \commandi is undefined}{do things if \commandi is defined}

هر دو دستور عین هم کار می‌کنند تنها تفاوتشون اینه که در آرگومان اول که یک دستور هست برای \if@bidi@csundef برای نام فرمان احتیاجی به \ نیست.