• Welcome to پارسی‌لاتک.
 
از تاریخ ۱۳۹۳/۸/۱۴ به دلیل ارائه خدمات بهتر به سایت جدید پرسش و پاسخ مهاجرت کرده‌ایم؛ از این رو امکان عضویت و ارسال پست در تالار غیرفعال شده است. لطفاً برای پرسیدن سوال‌های خود به سایت جدید مراجعه کنید.

ورود به سایت جدید

دو سوال در مورد تعریف محیط جدول

نویسنده ابوالفضل دیانت, نوامبر 25, 2011, 06:32:21 بعد از ظهر

« قبلی - بعدی »

ابوالفضل دیانت

با سلام
من سعی کردم یک محیط جدید برای جدول بنویسم به گونه ای که جدول با فونت دلخواه در متن اصلی ظاهر شود
دو سوال:
سوال اول: من یک محیط جدید به نام mytable تعریف کردم، آیا می توانم محیط table را بازنویسی کنم با دستور \renewenvironment
اما این کار را کردم و با خطا مواجه شدم، به نظر می رسد برخی از محیط ها را نمی توان بازنویسی نمود
سوال دوم: الان به طریقی که من فونت جدول را تغییر داده ام فونت caption نیز تغییر یافته ولی من می خواهم فقط فونت متن‌های جدول تغییر کند.
باتشکر

وحید دامن‌افشان

تا اونجایی که من می‌دونم‏، همه محیط‌ها رو می‌شه دوباره تعریف کرد.
دوباره تعریف کردن ‎‎ یک محیط ‎‎(یا دستور) برحسب خود اون محیط‏ (یا دستور)، باعث ایجاد یه حلقه (‎loop‎) نامتناهی و در نتیجه باعث ایجاد خطا می‌شه. به عنوان مثال‏، استفاده از کد‌هایی مثل


‎\renewenvironment{tabular}{‎\begin{tabular} ....‎}{‎....‎‎\end{tabular}‎}‎‎

‎‎باعث ایجاد حلقه ‎‎نامتناهی و در نتیجه‏، باعث ایجاد خطا می‌شه. پس واسه جلوگیری از ایجاد این حلقه نامتناهی‏، شما باید اول‏، تعریف قدیمی اون محیط رو ‎save‎ کنین و بعد از این کار‏، اون محیط رو renewenvironment کنین.
اما در مورد مشکل‌تون:
شما بجای محیط table باید محیط ‎tabular‎ رو renewenvironment کنین. واسه این کار هم‏، ابتدا فونت مورد نظرتون‏، مثلاً ‎traffic‎ رو به صورت


‎\defpersianfont\traffic‎[Scale=.75]{XM Traffic}‎‎‎

تعریف کنین و بعدش با توجه به توضیحات بالا‏، محیط ‎tabular‎ رو به صورت زیر‏،‎ «دوباره‌تعریف» کنین.


\let\oldtabular\tabular
\let\endoldtabular\endtabular
\renewenvironment{tabular}‎‎{‎\bgroup‎‎‎‎\‎traffic‎\oldtabular‎}%
{‎\endoldtabular ‎\egroup‎‎}‎‎‎

یک نکته: دستورات \bgroup و \egroup واسه ایجاد یک ‎group‎ استفاده می‌شن که محدوده اثر دستور ‎\traffic‎ رو محدود می‌کنن. به عبارت دیگه‏، این دو دستور باعث می‌شن که دستور ‎\traffic‎ فقط داخل محیط ‎\tabular‎ اثر کنه و فونت‌های بیرون این محیط رو عوض نکنه.‎‎
‎سعی می‌کنم تا هفته بعد‏، دو سه مثال دیگه در مورد دوباره تعریف کردن یک محیط یا دستور‏، توی تالار بذارم.
-------------------------------------
منبع: درباره دوباره تعریف کردن یه محیط‏، خودم قبلاً توی یه فروم انگلیسی پرسیده بودم. اما متاسفانه الان‏، لینکشو پیدا نکردم.