با سلام
من سعی کردم یک محیط جدید برای جدول بنویسم به گونه ای که جدول با فونت دلخواه در متن اصلی ظاهر شود
دو سوال:
سوال اول: من یک محیط جدید به نام 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 اثر کنه و فونتهای بیرون این محیط رو عوض نکنه.
سعی میکنم تا هفته بعد، دو سه مثال دیگه در مورد دوباره تعریف کردن یک محیط یا دستور، توی تالار بذارم.
-------------------------------------
منبع: درباره دوباره تعریف کردن یه محیط، خودم قبلاً توی یه فروم انگلیسی پرسیده بودم. اما متاسفانه الان، لینکشو پیدا نکردم.