سلام، لطفا وارد شوید یا عضو شوید.

نویسنده موضوع: سوالی در مورد بازنویسی دستورات  (دفعات بازدید: 1968 بار)

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

  • همکاران
  • Hero Member
  • ***
  • تشکر
  • -اهدا شده: 192
  • -دریافت شده: 271
  • ارسال: 812
    • ديدن مشخصات
سوالی در مورد بازنویسی دستورات
« : سپتامبر 30, 2012, 09:54:01 am »
با سلام
من می خواهم یک دستور مثلا مثل دستور زیر را بازنویسی کنم:
\newglossaryentry{Hello}{
type=english,
name={\lr{Hello}},
plural={سلام},
description={
واژه‌ای است که معمولا هنگامی که دو فرد به هم می‌رسند بیان می‌شود، و به عنوان شروعی برای مکالمه انتهاب می‌گردد. }
}

قاعدتا باید بنویسم:
\let\oldnewglossaryentry\newglossaryentry
\renewcommand{\newglossaryentry}[2]{
\oldnewglossaryentry{#1}{type = ...., description= ........, name= .........}
}

سوال اول: مثلا می‌خواهم یک تغییری روی type‌ و یا plural بدهیم، چگونه می‌توانم این مقادیر را استخراج کنم. چگونه باید مقدار type را که کاربر اختصاص داده است و یا مقدار plural که کاربر وارد کرده را استخراج کنم، و خودم با یکسری تغییرات آن ها را در دستور بازنویسی شده قرار دهم.
اگر دستور من آرگومان هایش از هم جدا بود خیلی ساده با #num این کار انجام می‌شد.

سوال دوم: اگر دستور من option داشته باشد چگونه می‌توانم بفهمم که کاربر option ها را وارد کرده یا نه و این option‌ها چه هستند؟
باتشکر




« آخرين ويرايش: سپتامبر 30, 2012, 09:56:58 am توسط ابوالفضل دیانت »

آفلاین vafa

  • مشاور
  • Hero Member
  • *
  • تشکر
  • -اهدا شده: 78
  • -دریافت شده: 2012
  • ارسال: 4,429
    • ديدن مشخصات
پاسخ : سوالی در مورد بازنویسی دستورات
« پاسخ #1 : سپتامبر 30, 2012, 10:08:32 am »
برای سوال اول، بسته glossaries از بسته xkeyval استفاده می‌کنه و این چیزهایی که می‌خواهی تعریفشون رو تغییر بدهی key value هستند مثلاً type اینگونه تعریف شده:
\define@key{glossentry}{type}{%
\def\@glo@type{#1}}
این تعریف‌ها در فایل glossaries.sty هست.

سوا دوم ، اگر دستور با \newcommand تعریف شده باشه فقط می‌تونه یک option داشته باشه و پیدا کردنش خیلی راحته. به هر حال باز هم بستگی داره.

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

  • همکاران
  • Hero Member
  • ***
  • تشکر
  • -اهدا شده: 192
  • -دریافت شده: 271
  • ارسال: 812
    • ديدن مشخصات
پاسخ : سوالی در مورد بازنویسی دستورات
« پاسخ #2 : سپتامبر 30, 2012, 06:52:13 pm »
با سلام و تشکر

من وقتی طبق مطلبی که شما گفتید تابع را بازنویسی می‌کنم به صورت زیر:
\makeatletter
\let\oldnewglossaryentry\newglossaryentry
\renewcommand{\newglossaryentry}[2]{
\oldnewglossaryentry{#1}{type=persian , name={\@glo@name} , plural={سلام}, description ={سلام}}
}
\makeatother

به نظر می‌رسد که تابع در داخل یک حلقه بی نهایت گیر می‌کند. این مورد نیز شاید به دلیل این است که ما متغیر name را داریم به name دوباره می‌دهیم، چگونه می‌توان در این مورد از این مورد پرهیز نمود؟

البته طبق راهنمایی‌های بسته xkeyval ظاهرا چنین دستوراتی را باید نوشت، اما با نوشتن دستورات زیر با خطا مواجه می‌شوم؟!

\makeatletter
\let\oldnewglossaryentry\newglossaryentry
\renewcommand{\newglossaryentry}[2]{
\gsavekeys{glossentry}{name}
\oldnewglossaryentry{#1}{type=persian , name=\usevalue{name} , plural={سلام}, description ={سلام}}
}
\makeatother
باتشکر



« آخرين ويرايش: سپتامبر 30, 2012, 07:19:33 pm توسط ابوالفضل دیانت »

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

  • همکاران
  • Hero Member
  • ***
  • تشکر
  • -اهدا شده: 192
  • -دریافت شده: 271
  • ارسال: 812
    • ديدن مشخصات
پاسخ : سوالی در مورد بازنویسی دستورات
« پاسخ #3 : اكتبر 01, 2012, 10:19:07 pm »
با سلام
من در این مورد به مولف بسته glossaries ایمیل زدم. جواب ایشان را برای شما نقل می‌کنم شاید مفید باشد:
نقل قول
The following commands are expandable, but depending on whether you've used the sanitize option, some of them might not be usable in the actual document: \glsentryname{label}, \glsentryfirst{label}, \glsentrytext{label}, \glsentrytype{label}, \glsentryfirstplural{label}, \glsentryplural{label}, \glsentrydesc{label}. For example \glsentrytext{en-Encoding} or \glsentrytext{pa-Encoding}.
I hope that helps.
Regards
Nicola Talbot

فقط  من هنوز با یک مشکل مواجه هستم که امیدوارم کمکم کنید تا آن را حل کنم:
من دستور را به صورت زیر بازنویسی کردم:
\let\oldnewglossaryentry\newglossaryentry
\renewcommand{\newglossaryentry}[2]{
      \oldnewglossaryentry{en-#1}{type = english,  name = {\glsentryname{#1}} , plural = {\glsentryplural{#1}} , description = {---------} }
      \oldnewglossaryentry{fa-#1}{type = persian, name= {\glsentryplural{#1}} , plural = {\glsentryname{#1}}  , description = {---------}}
}

اما این مورد کار نمی کند؟ چرا که وقتی من مثلا یک واژه به صورت زیر وارد می‌کنم:
\newglossaryentry{Cell}{
name={‌سلول},
plural={\lr{Cell}},
description={تلفن همراه}
}

چون دستور را بازنویسی کردم اصلا glossaryentry مثلا با نام Cell هنوز تعریف نشده است. چرا که با بازنویسی دستور newglossaryentry دو entry با کلید en-Cell‌ و fa-Cell تعریف می‌شود.
اگر هم به جای #1 از en-#1 استفاده کنم برنامه در داخل یک حلقه گیر می‌کند.
به نظر می‌رسد که راه‌حل این باشد که ما قبل از تعریف دو دستور newglossaryentry در قسمت بازنویسی یه جوری مقادیر را بیرون بکشیم. اما نمی دانم چگونه این مورد را به صورت کد بنویسم؟
باتشکر






« آخرين ويرايش: اكتبر 01, 2012, 10:21:08 pm توسط ابوالفضل دیانت »

 

سوالی در مورد Irandoc

نویسنده آسیهانجمن عمومی

پاسخ ها: 2
مشاهده: 2335
آخرين ارسال مارس 02, 2010, 09:12:57 am
توسط مهدی امیدعلی
سوالی در مورد واژه نامه

نویسنده diyanatانجمن حروف‌چینی مستندات

پاسخ ها: 0
مشاهده: 2368
آخرين ارسال اكتبر 11, 2010, 09:27:56 am
توسط diyanat
دستورات citep\ و citet\ خروجی مورد نظر را ندارند

نویسنده امیرحسین شرفیانجمن مراجع و بیب‌تک BibTeX

پاسخ ها: 15
مشاهده: 6886
آخرين ارسال اوت 08, 2011, 02:18:18 pm
توسط امیرحسین شرفی
ناسازگاری دستورات scalebox و resizebox با زی‌پرشین

نویسنده علیانجمن گرافیک، جدول و شکل

پاسخ ها: 2
مشاهده: 2760
آخرين ارسال اكتبر 22, 2009, 01:12:35 am
توسط علی
مشکل با forward search و یه سوال در مورد inverse search

نویسنده وحید دامن‌افشانانجمن Texmaker

پاسخ ها: 3
مشاهده: 3765
آخرين ارسال اكتبر 19, 2009, 11:15:37 pm
توسط وحید دامن‌افشان
اشکالاتی در مورد نوشتن پایان نامه با زی پرشین

نویسنده s_mirehانجمن زی‌تک

پاسخ ها: 29
مشاهده: 16252
آخرين ارسال ژوئیه 02, 2014, 10:01:57 am
توسط negarins
مشکل به همریختگی دستورات لاتک موقع تایپ در انجمن

نویسنده هادی صفی‌اقدمانجمن عمومی

پاسخ ها: 1
مشاهده: 2201
آخرين ارسال نوامبر 03, 2009, 12:59:08 am
توسط محمود امین‌طوسی
مشکلی در مورد جدول

نویسنده habib_seifانجمن گرافیک، جدول و شکل

پاسخ ها: 6
مشاهده: 3746
آخرين ارسال ژوئیه 04, 2011, 10:21:57 pm
توسط vafa