لاتک/وارد کردن واژه نامه و فهرست اختصارات با بسته glossaries
دیباچه
ویرایشدر این نوشتار قصد داریم تا شما را با نحوه ایجاد واژهنامه و فهرست اختصارات با استفاده از بسته glossaries آشنا سازیم. glossaries بستهای است بسیار قدرتمند که توسط خانم Nicola Talbot با چنین هدفی نوشته شده است.
مزایا
ویرایشدر پاسخ به این سوال که این بسته چه مواردی را برای ما به ارمغان میآورد میتوان موارد زیر را برشمرد:
- اضافه نمودن و مرتبسازی واژهها و اختصارات تعریف شده به صورت خودکار به فهرست واژگان و اختصارات. بر طبق این ویژگی کافی است که شما واژگان و اختصارات خود را در متن در مکان دلخواه استفاده کنید. بسته glossaries به صورت خودکار واژگان را به صورت مرتب شده در فهرست واژگان و اختصارات وارد میکند.
- کنترل کامل بر روی واژگان و اختصارات تعریف شده در متن. به عنوان مثال اگر بخواهید اولین باری که از یک واژه یا اختصار در متن استفاده میکنید، معادل فارسی یا انگلیسی آن پاورقی بخورد، نیازی نیست به دنبال اولین مکان فراخوانی بگردید. بسته glossaries این کار را برای شما انجام میدهد، و علاوه بر این تمامی اقدامات لازم را بر روی واژه مورد نظر اعمال میکند.
- آسانسازی تغییرات در متن. فرض کنید که شما عبارت Ad Hoc Network را در ابتدا شبکه اقتضایی ترجمه کردید. اکنون بنا به دلیلی تصمیم گرفتید معادل فارسی شبکه موردی را برگزینید، نیازی نیست که در تمام متن به دنبال این واژه بگردید و تک به تک آن را تغییر دهید، با استفاده از glossaries با یک بار تغییر کل واژههای درون متن به معادل جدید تبدیل خواهد شد.
گذری بر مراحل کار با بسته glossaries
ویرایشبرای وارد کردن واژهنامه و فهرست اختصارات توسط بسته glossaries مراحل زیر را باید طی نمود.
- وارد کردن بسته glossaries
- تنظیمات بسته glossaries و نحوه نمایش واژهنامهها و فهرست اختصارات.
- تعریف واژهها و اختصارات.
- استفاده از واژهها و اختصارات تعریف شده در متن اصلی
- چاپ واژهنامه و فهرست اختصارات در مکانی دلخواه در متن اصلی
- اجرای xelatex و xindy برای تولید واژهنامه و فهرست اختصارات.
در استفاده از مواردی که در این نوشتار خواهد آمد، حتما نکات زیر را مدنظر قرار دهید.
- بستههای Latex مورد استفاده شما حتما باید بروز باشد، به خصوص بستههای xepersian، bidi، glossaries و hyperref.
- کدهایی که در این نوشتار آمده است، توسط glossaries نسخه ۴٫۰۶ به بعد پشتیبانی میشود.
- نحوه استفاده ما از بسته glossaries به گونهای است که به موتور xindy نیاز خواهیم داشت. اگر از TexLive استفاده میکنید نباید نگران باشید، چون این موتور به صورت پیشفرض در Texlive قرار دارد.
- برای اطمینان از درست کار کردن ابزارهای مورد نیاز برای بسته glossaries، در صورتی که روند کامپایل بیان شده در بخش نحوه کامپایل را بر روی فایلهای لینک زیر اعمال کنید، میبایست خروجی pdf مشتمل بر فهرست اختصارات و واژهنامه بدون رخداد هیچگونه خطایی تولید گردد.
نمایی از خروجی pdf مثال ذکر شده در شکل .... نشان داده شده است.
در ادامه هر یک از مراحل یاد شده را شرح خواهیم داد.
وارد کردن بسته glossaries
ویرایشدر گام نخست شما میبایست بسته glossaries را وارد کنید. در کل سه قانون برای ترتیب وارد کردن بستهها وجود دارد که به شرح زیر است.
- بسته xepersian حتما حتما باید آخرین بستهای باشد که فراخوانی میشود. این قانون کاملا کلی است و در هر متنی که شما قصد نوشتن آن را با استفاده از xepersian دارید باید رعایت شود.
- بسته hyperref جزو آخرین بستههایی باید باشد که فراخوانی میشود. این قانون هم کلی است.
- بسته glossaries حتما باید بعد از hyperref فراخوانی شود.
پس خواهیم داشت.
\usepackage{hyperref}
\usepackage[sanitizesort=false,sanitize={name=false},nomain,xindy,acronym]{glossaries}
\usepackage{xepersian}
optionsهایی که در فراخوانی بسته glossaries فعال شده است به شرح زیر است.
- sanitizesort=false
- sanitize={name=false}
- nomain
- xindy: با این option تعیین میکنیم که برای مرتبسازی واژهها و اختصارات از موتور xindy استفاده شود. با استفاده از این موتور Latex میتواند کلمات فارسی را نیز مرتب سازد.
- acronym: با قرار دادن acronym نشان میدهیم که میخواهیم علاوه بر واژهنامه فهرست اختصارات نیز در متن داشته باشیم.
لازم به تذکر است که حتی اگر شما نمیخواهید از فهرست اختصارات در متن استفاده کنید، این option را فعال نگهدارید، چون در بخشهای بعدی فرض شده است که در شما میخواهید اختصارات را نیز با همین روش تولید کنید. البته این فرض خللی در کار شما ایجاد نخواهد کرد.
تنظیمات بسته glossaries
ویرایشنکته: شما میتوانید از خواندن این بخش صرفنظر کنید. فقط کافی است که تمامی دستوراتی که در فایل قرار داده شده در لینک زیر قبل از \begin{document} تعریف شده است را در فایل خود وارد کنید. در صورتیکه نحوه نمایش فعلی مناسب است، نیازی نیست خود را درگیر جزئیات بیان شده در این بخش بکنید.
در این مرحله میخواهیم نحوه نمایش واژهنامهها، رفتاری که با واژهها و اختصارات در متن اصلی داریم را تعریف کنیم. دقت کنید که بسته glossaries برای تمامی موارد یاد شده پیشفرضهایی دارد، اما برخی از این پیشفرضها مطابق زبان فارسی نیست که ما سعی میکنیم آنها را مناسب برای یک نوشتار فارسی بکنیم. این بحث را در چند زیربخش دنبال میکنیم.
من با این فرض جلو میروم که شما میخواهید واژههای خود را در دو واژهنامه فارسی به انگلیسی و انگلیسی به فارسی قرار دهید. از سوی دیگر یک فهرست اختصارات نیز میخواهید داشته باشید. به عبارت دیگر شما در کل سه نوع glossary میخواهید توسط بسته glossaries ایجاد کنید. در ابتدا باید برای هر یک از این سه نوع glossary یاد شده، سه نام انتخاب کنید، اجازه بدهید این نامها را به صورت زیر انتخاب کنیم.
- english نامی که برای واژهنامه انگلیسی به فارسی انتخاب میکنیم.
- persian نامی که برای واژهنامه فارسی به انگلیسی انتخاب میکنیم.
- abrr نامی که برای فهرست اختصارات انتخاب میکنیم.
تغییر نحوه نمایش فهرست اختصارات و واژهنامهها
ویرایشدر گام نخست، ما باید استایل هر یک از glossaryهای سهگانه را تعیین کنیم. باز هم تاکید میکنم که اگر شما این کار را نکنید بسته glossaries از پیشفرضهای خود استفاده میکند. به منظور تعریف استایل glossary از دستور newglossarystyle میبایست استفاده کنیم. این دستور شامل بازنویسی برخی از فرامین بسته glossaries به منظور تغییر شکل glossary میشود. بدین منظور سه استایل به نامهای mylistFa برای استفاده در glossary نوع persian، استایل mylistEn برای استفاده در glossary نوع english و استایل mylistAbbr برای استفاده در glossary نوع abrr تعریف میکنیم. به عنوان مثال استایل به صورت زیر تعریف میشود.
\newglossarystyle{mylistFa}{
\renewenvironment{theglossary}{}{}
\renewcommand*{\glossaryheader}{}
\renewcommand*{\glsgroupheading}[1]{\vskip 12mm\section*{ \glsgetgrouptitle{##1}} }
\renewcommand*{\glsgroupskip}{}
\renewcommand*{\glossaryentryfield}[5] {\noindent \Glsentryname{##1} \dotfill \space \Glsentryplural{##1} \vskip 0mm}
\renewcommand*{\glossarysubentryfield}[6]{\glossaryentryfield{##2}{##3}{##4}{##5}{##6}}
}
برای دستیابی به تعریف دو استایل دیگر به لینک قرار داده شده در قسمت قبل مراجعه کنید.
همانطور که مشاهده میکنید دستوراتی که در هر استایل بکار رفته است مشابه یکدیگر هستند. در مورد این دستورات میتوانید مطالب بیشتری را در راهنمای بسته glossaries بخوانید. اما فقط یکسری نکات کلی:
- با تعریف دوباره دستور glsgroupheading، اینگونه تنظیم میشود که کلمات و اختصارات در گروههایی با سرگروهی حرف ابتدایی واژه و یا اختصار دستهبندی میشوند.
- در مورد واژهنامه انگلیسی به فارسی و فهرست اختصارات به دلیل اینکه سرگروهها حروف انگلیسی هستند آنها را در یک محیط LTR قرار دادیم، تا از سمت چپ نوشته شوند.
تولید فایلهای موقت
ویرایشدر ادامه تنظیمات سه دستور زیر را وارد میکنیم.
\newglossary[glg]{english}{gls}{glo}{واژهنامه انگلیسی به فارسی}
\newglossary[blg]{persian}{bls}{blo}{واژهنامه فارسی به انگلیسی}
\newglossary[alg]{abrr}{acr}{acn}{فهرست اختصارات}
برای اجرا xindy بر روی فایل .tex و تولید واژهنامهها و فهرست اختصارات و فهرست نمادها یکسری فایل تعریف شده است. Latex دادههای مربوط به واژه نامه و .. را در این فایلها نگهداری میکند. برای مثال در glossary از نوع english، دو فایل با پسوندهای gls و glo تعریف شده است. هنگامی که شما واژههای خود را در متن اصلی فراخوانی میکنید، دو فایل هم نام با فایل اصلی tex اما با پسوند glo و gls تولید میشود. در مرحلهٔ بعدی (در بخشهای بعدی در مورد این مرحله به طور کامل توضیح خواهیم داد)، xindy بر روی این دو فایل اجرا میشود. این دو فایل در برگیرنده اطلاعاتی در مورد واژه مورد استفاده است. xindy با استفاده از این اطلاعات واژهها را بر اساس حروف الفبا مرتب نموده و برای قرار گیری در فهرست واژگان آماده میسازد، xindy اطلاعات حاصله را در فایلی با پسوند glg ذخیره میسازد.
برای دو glossary دیگر یعنی persian و abrr برای هر کدام سه فایل با پسوندهای مختلف تعریف شده است. در نهایت برای تولید هر سه glossary نه فایل همنام با فایل tex اصلی اما با پسوندهای یاد شده ایجاد میشود.
مهمترین option دستور newglossary نام glossary تعریف شده است. دقت کنید که این نام در title مربوط به هر glossary خواهد آمد.
اولین فراخوانی واژه
ویرایشدر بخشهای بعدی خواهیم گفت که در متن اصلی شما میتوانید با دستورات gls و glspl واژهها و اختصارات خود را فراخوانی کنید. بر طبق استاندارد میخواهیم اولین باری که واژه فراخوانی میشود به صورت خودکار معادل آن پاورقی بخورد. خوشبختانه بسته glossaries از این قابلیت پشتیبانی میکند. برای فعالسازی این قابلیت دو گروه دستور زیر را میبایست در قسمت تنظیمات وارد کنیم.
\defglsentryfmt[english]{%
\glsgenentryfmt
\ifglsused{\glslabel}{}{\LTRfootnote{\glsentryname{\glslabel}}}
}
\defglsentryfmt[abrr]{%
\glsgenentryfmt
\ifglsused{\glslabel}{}{\LTRfootnote{\glsentryplural{\glslabel}}}
}
همانطور که مشاهده میکنید در این دو دستور بیان شده است که اگر شما از دستورات gls و glspl در متن استفاده کنید، در اولین بار استفاده به صورت خودکار معادل آن پاورقی بخورد.
بازتعریف محیط printglossary و تعریف محیط printabbreviation
ویرایشدر این قسممت محیط استاندارد printglossary را بازتعریف میکنیم. هدف از این بازتعریف این است که هر دو واژهنامه با یک دستور و با استایل مشخص وارد شوند. در ضمن محیطی نیز به عنوان printabbreviation برای تولید فهرست اختصارات تعریف میکنیم. در ضمن هر دو محیط یادشده را به فهرست مطالب و قسمت bookmarkها اضافه میکنیم.
\renewcommand{\printglossary}{
\let\appendix\relax
\baselineskip=.75cm
\clearpage
\phantomsection
\twocolumn{}
\addcontentsline{toc}{chapter}{واژه نامه انگلیسی به فارسی}
\glossarystyle{mylistEn}
\Oldprintglossary[type=english]
\clearpage
\phantomsection
\addcontentsline{toc}{chapter}{واژه نامه فارسی به انگلیسی}
\glossarystyle{mylistFa}
\Oldprintglossary[type=persian]
\onecolumn{}
\baselineskip = \baselineskipVar
}%
\newcommand{\printabbreviation}{
\baselineskip=.75cm
\glossarystyle{mylistAbbr}
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{فهرست اختصارات}
\Oldprintglossary[type=abrr]
\clearpage
\baselineskip = \baselineskipVar
}%
دقت کنید که ما در اینجا همه تنظیمات لازم را نیاوردیم. برخی از دستورات توضیح داده نشده است. تمامی این دستورات به صورت یکپارچه در مثالی که در شروع این نوشتار ارایه شد، تمامی این دستورات آورده شده است.
تعریف واژهها و اختصارات
ویرایشدر این مرحله باید واژهها و اختصارات را تعریف کنیم. دقت کنید که واژهها و اختصاراتی که در این قسمت تعریف میکنید در واژهنامه و متن وارد نمیشود مگر آنکه از آن استفاده کنید. واژهها و اختصارات را میتوانید در فایلهای جداگانه تعریف کنید و ان را با دستور input وارد کنید. به عنوان مثال سه واژه به صورت زیر تعریف میکنیم.
\newglossaryentry{Accuracy}
{name={Accuracy},
plural={دقت},
description={}
}
\newglossaryentry{Achievable}
{name={Achievable},
plural={قابل دستیابی},
description={}
}
\newglossaryentry{Action}
{name={Action},
plural={کنش},
description={}
}
هر واژه یک برچسب یکتا باید برای خود داشته باشد. برای هر واژه یک name و plural خواهیم داشت. name معادل انگلیسی و plural معادل فارسی واژه مورد نظر است. یک قسمت به نام description نیز وجود دارد که به صورت دلخواه میتواند پر شود.
برای تعریف یک اختصار نیز به صورت زیر عمل میکنیم. به عنوان مثال در ادامه دو اختصار را تعریف میکنیم.
\newacronym{MOMT}{MO-MT}{Mobile Originated - Mobile Terminated}
\newacronym{MS}{MS}{Mobile Station}
قسمت اول تعریف، برچسب اختصار است، دو قسمت بعدی نیز به ترتیب name و plural اختصار است. در اینجا plural در حقیقت بازشده اختصار مورد نظر است.
نکات
- بین هر تعریف واژه و یا اختصار بهتر است یک خط خالی قرار دهید.
- شما میتوانید به عنوان مثال واژهها و اختصارات را در یک فایل جدا تعریف کنید و سپس در قبل از begin{document} آن را وارد کنید. برای مثال فرض کنید که در فایل mygloss.tex واژهها تعریف شده است، اکنون کافی است که:
\documentclass{report}
......................
......................
\input{mygloss}
\begin{document}
استفاده از واژهها و اختصارات
ویرایشدر بسته glossaries روشهای مختلفی برای فراخوانی واژهها و اختصارات قرار داده شده است. در ادامه به صورت مختصر این مطلب را توضیح میدهیم. دقت کنید که آرگومان ورودی تمامی دستورات یاد شده، label واژه و یا اختصار تعریف شده است.
glspl
ویرایشبا این دستور plural واژه یاد شده در مکانی که این دستور را قرار دادهاید وارد میشود. مثال فرض کنید در قسمت واژهنامه، واژهای به صورت زیر تعریف میکنیم.
\newglossaryentry{Action}
{name={Action},
plural={کنش},
description={}
}
اکنون اگر در فایل tex خود مینویسیم.
یک ربات در مجموع تعدادی \glspl{Action} میتواند انجام دهد
خروجی pdf به صورت زیر خواهد شد.
یک ربات در مجموع تعدادی کنش میتواند انجام دهد
در ضمن اگر این اولین باری است که از این واژه استفاده میکنیم، به طور خودکار معادل انگلیسی واژه استفاده شده یعنی کنش که Action است، در پاورقی وارد میشود.
gls
ویرایشبا استفاده از این دستور قسمت name واژه یا اختصار تعریف شده، وارد متن میشود. پرواضح است که این دستور بیشتر برای وارد کردن اختصار در متن مورد استفاده قرار میگیرد. فرض کنید که یک اختصار به صورت زیر در قسمت اختصارات تعریف میکنیم.
\newacronym{IWLAN}{I-WLAN}{Interworking Wireless Local Network}
اکنون میتوانیم به صورت زیر در متن اختصار مورد را فراخوانی کنیم.
در شبکههای \gls{IWLAN} میتوان میزان تاخیر را
خروجی pdf به صورت زیر خواهد شد.
در شبکههای I-WLAN میتوان میزان تاخیر را
باز نیز اگر این اولین باری است که از این اختصار استفاده میشود، معادل آن یعنی Interworking Wireless Local Network پاورقی میخورد.
*glspl
ویرایشاین دستور به مانند glspl عمل میکند. یعنی قسمت plural واژه را در متن میگذارد، واژه را در واژهنامهها وارد میکند. اما اگر اولین مرتبهای است که واژه فراخوانی میشود آن را پاورقی نمیزند. به عنوان مثال متن زیر را در نظر بگیرید.
یک ربات در مجموع تعدادی \glspl*{Action} میتواند انجام دهد. اما \glsplp{Action} یک ربات را میتوان
در خروجی pdf، در هر دو حالت قسمت plural واژه با برچسب Action قرار میگیرد. اما با اینکه در اولین جمله اولینباری است که کلمه Action آمده است، این کلمه پاورقی نمیخورد. و اولین بار فراخوانی واژه Action در جمله دوم در نظر گرفته میشود و همان جا نیز پاورقی ایجاد خواهد شد.
*gls
ویرایشدستور *gls کاملا شبیه به دستور gls است، با این تفاوت که کلمه مورد نظر پاورقی نمیخورد. مطالب بیان شده در قسمت *glspl در فهم این موضوع میتواند شما را یاری کند.
glsentryname
ویرایشاین دستور به مانند gls است. با این تفاوت که فقط در متن قسمت name اختصار یا واژه مورد نظر وارد میشود، و واژه مورد نظر نه پاورقی میخورد و نه در واژهنامهها وارد میشود.
glsentryplural
ویرایشاین دستور به مانند glspl است. با این تفاوت که فقط در متن قسمت plural اختصار یا واژه مورد نظر وارد میشود، و واژه مورد نظر نه پاورقی میخورد و نه در واژهنامهها وارد میشود.
glsuseri
ویرایشبا استفاده از این دستور واژه یا اختصار نه در متن ظاهر میشود و نه پاورقی میخورد، فقط به واژهنامهها و یا فهرست اختصارات اضافه میشود.
نکات
ویرایشدر وارد کردن واژهها و اختصارات به نکات زیر دقت کنید.
- در قسمت caption جدول و شکل از gls و glspl استفاده نکنید. به جای آن از *glspl و *gls استفاده کنید. چرا که اگر از gls و glspl در قسمت captionاستفاده کنید، و فهرست تصاویر و جداول را وارد کنید، همواره اولین جایی که واژه مورد نظر بکار میرود، در ابتدای نوشتار در فهرست جداول و اشکال است، و شما مشاهده میکنید که در این فهرستها پاورقی ظاهر میشود که کار درستی نیست. شکل روبهرو را مشاهده کنید.
- اتفاق یاد شده برای فهرست مطالب نیز رخ میدهد. پس در عنوان chapter، section، subsection و subsubsection به هیچوجه از gls و glspl استفاده نکنید. در ضمن به دلیل مشکلی که در قسمت bookmark بسته hyperref با glossaries دارد، از *gls و *glspl نیز نمیتوانید استفاده کنید. در صورت استفاده bookmarkها به درستی نمایش داده نمیشوند. پس تنها مجبور هستید که از glsentryplural و glsentryname استفاده کنید.
- اگر بخواهیم مثلا یک کلمه در واژه نامه را Indexکنیم، مثلا بنویسیم، \index{\glspl{Water}}، این دستور index درست عمل نمیکند. نویسنده بسته glossaries در این باره این طور گفته است.
If you inspect the .idx file you will see that it contains the following: \indexentry{\glsentryplural{StrictlyStable}|hyperpage}{۱} \index doesn't expand its argument when writing to the .idx file and since xindy doesn't understand (La)TeX commands the index won't be correctly sorted. This is a feature of \index and is not connected with glossaries. You could try something like \expandafter\index\expandafter{\glsentryplural{StrictlyStable}}
پس برای وارد کردن واژهها در نمایه به جای دستور index باید دستورات زیر را به ترتیب برای gls و glspl استفاده نمود.
\expandafter\index\expandafter{\glsentryname{.......}}
\expandafter\index\expandafter{\glsentryplural{.......}}
چاپ واژهنامه و فهرست اختصارات
ویرایشبا توجه به بازتعریف محیطهای وارد کردن واژهنامه و فهرست اختصارات در قسمت تنظیمات، در این قسمت کافی است هر کجا که میخواهید دو واژهنامه فارسی به انگلیسی و انگلیسی به فارسی وارد شود، دستور \printglossary را وارد کنید. برای فهرست اختصارات نیز در مکان دلخواه دستور \printabbreviation را وارد کنید.
- بر طبق استاندارد بهتر است واژهنامهها بعد از قسمت مراجع و قبل از نمایه وارد شود.
- فهرست اختصارات بهتر است بعد از فهرست جداول و اشکال در ابتدای متن وارد شود.
نحوه کامپایل
ویرایشبعد از طی مراحل قبلی، به آخرین مرحله میرسیم. در آخرین مرحله میبایست فایل خود را کامپایل کنیم، و موتور xindy را بر روی آن اجرا کنیم. بدین منظور گامهای یاد شده در ادامه را انجام دهید.
- ابتدا یک بار فایل خود را با xelatex کامپایل کنید. اگر در editor مورد استفاده شما، برای کامپایل xelatex تنظیم شده است، کافی است گزینه quick build را اجرا کنید.
نکته: در صورتی که از texmaker یا texstudio و یا دیگر ویرایشگرها استفاده میکنید، تنظیم پیشفرض pdflatex است نه xelatex. برای xelatex کردن تنظیم پیشفرض به صفحه زیر مراجعه کنید.
- در این مرحله باید سه دستور زیر را بر روی فایل اصلی اعمال کنید.
xindy -L persian-variant1 -C utf8 -I xindy -M %.xdy -t %.glg -o %.gls %.glo
xindy -L persian-variant1 -C utf8 -I xindy -M %.xdy -t %.blg -o %.bls %.blo
xindy -L english -C utf8 -I xindy -M %.xdy -t %.alg -o %.acr %.acn
برای اجرای این سه دستور کافی است که این سه دستور را در ویرایشگر خود تعریف کنید. بدین منظور برای مثال در ویرایشگر Texstudio به صورت زیر عمل کنید.
- از منوی option گزینه configure Texstudio را انتخاب کنید.
- به قسمت Build بروید.
- در قسمت user command یک دستور با یک نام دلخواه دستوری به صورت زیر را وارد کنید.
xindy -L persian-variant1 -C utf8 -I xindy -M %.xdy -t %.glg -o %.gls %.glo | xindy -L persian-variant1 -C utf8 -I xindy -M %.xdy -t %.blg -o %.bls %.blo | xindy -L english -C utf8 -I xindy -M %.xdy -t %.alg -o %.acr %.acn
- پس تایید برای اجرا به منوی tools و قسمت users رفته و در آن جا بر روی دستوری که تعریف کردید کلیک کنید.
- با کلیک بر روی این دستور هر سه دستور باد شده اجرا میگردند.
- در مرحله کامپایل بعدی، دو بار دیگر دستور quick build را اجرا کنید.
اکنون در فایل خروجی pdf واژهها و اختصارات به صورت مرتب شده در واژهنامهها و فهرست اختصارات قرار میگیرد.