ای کاش این مشکل را قبل از شروع کار مطرح میکردید. در این صورت کافی بود مثلاً سه کلمه اول هر بیت را با دستور
\index*{سینه خواهم شَرحه}
تایپ میکردید و بعد مثل سندهای معمولی از سیستم نمایهسازی لاتک استفاده میکردید. لازم به ذکر است که تفاوت دستور \index{}
با \index*{}
این است که دستور آخری، متن نمایهشده را در خود متن هم چاپ میکند.
حالا که کار تمام شده است، من یک راهحل پیشنهاد میکنم که با وجود اینکه کاملاً خودکار نیست، اما با صرف کمی وقت میتوانید به چیزی که میخواهید برسید.
فایل زیر را در نظر بگیرید.
\documentclass[a4paper,12pt,twoside]{article}
\usepackage[top=25mm, bottom=25mm, left=25mm, right=25mm]{geometry}
\usepackage{bidipoem}
\usepackage{makeidx}
\makeindex
\usepackage{ghab}
\usepackage{color}
\usepackage{fancyhdr}
\usepackage{fontspec} % package for new fonts
\usepackage[localise]{xepersian}
\settextfont[Scale=1.2]{Yas}
%\settextfont[Scale=1.2]{HM XNiloofar}
\renewcommand\poemcolsepskip{1cm}
%فرمان \poemcolsepskip فاصلهٔ بین مصراع اشعار را تغییر میدهد.
\AtBeginDocument{\setlength{\baselineskip}{25pt}}
%فرمان \baselineskip فاصلهٔ بین ابیات را تغییر میدهد.
\makeatletter
\newcount\LineNumber \newcount\templinenumber
%در دستور \linenumberskip اگر مقدار مثبت باشد فاصله عدد و بیت کم میشود و اگر مقدار منفی باشد فاصله عدد و بیت زیاد میشود.
\newdimen\linenumberskip \linenumberskip=-2em
\chardef\linestep=5
\def\poemlinenumber{%
\advance\LineNumber1
\templinenumber=\LineNumber
\computelinenumber
}
\def\computelinenumber{%
\ifnum\templinenumber>\linestep
\advance\templinenumber-\linestep
\expandafter\computelinenumber
\else
\ifnum\templinenumber=\linestep
\leavevmode\rlap{\kern\linenumberskip\footnotesize\the\LineNumber}%
\fi
\fi
}
\newenvironment{numberedtraditionalpoem}
{\everypar{\poemlinenumber}%
\begin{traditionalpoem}}
{\end{traditionalpoem}}
%\makeatother
\defpersianfont\nastaliq{IranNastaliq}
\newsavebox\mybox
\newenvironment{storytitle}[1]{%
\noalign{%
\vskip10pt%
\everypar{}%
\darghab[\dimexpr(\poem@width+\poemcolsepskip+\poem@width)]{\centering\nastaliq\Large #1}%
\vskip10pt
}%
}
\makeatother
%مقادیر \vskip10pt فاصله بالا و پایین قاب را از ابیات تعیین میکند.
\بگذار\تیتر\storytitle
\title{\nastaliq\LARGE دفتر اوّل}
\date{}
%define the header
\fancypagestyle{mypagestyle}{%
\fancyhf{}% Clear header/footer
\fancyhead[OC]{\سیاه دفتر اوّل} % Author on Odd page, Centred
\fancyhead[EC]{\سیاه مثنوی معنوی } % Title on Even page, Centred
\fancyfoot[C]{\thepage}%
}
\pagestyle{mypagestyle}
\renewcommand{\headrulewidth}{0pt}
\newcommand{\myindex}[1]{#1\index{#1}}
\let\textsf\myindex
\renewcommand{\indexname}{نمایه بیتها}
\begin{document}
\maketitle
\begin{numberedtraditionalpoem}
\textsf{بشنو، این نی} چون شکایت میکند&از جداییها حکایت میکند\\
\textsf{کز نیستان تا} مرا بُبْریدهاند&در نفیرم مرد و زن نالیدهاند\\
\textsf{سینه خواهم شَرحه} شَرحه از فراق&تا بگویم شرح درد اشتیاق\\
\textsf{هر کسی کو} دور ماند از اصل خویش&باز جوید روزگار وصل خویش\\
\textsf{من بههر جمعیّتی} نالان شدم&جفت بدحالان و خوشحالان شدم\\
\textsf{هر کسی از} ظنّ خود شد یار من&از درون من نجُست اسرار من\\
\textsf{سِرّ من از} نالهٔ من دور نیست&لیک چشم و گوش را آن نور نیست\\
\textsf{تن ز جان} و جان ز تن مستور نیست&لیک کس را دیدِ جان دستور نیست\\
\textsf{آتشست این بانگ} نای و {\رنگ{قرمز}نیست باد}&هر که این آتش ندارد {\رنگ{قرمز}نیستباد}\\
\end{numberedtraditionalpoem}
\printindex
\end{document}
در این فایل، من دو خط
\usepackage{makeidx}
\makeindex
را در ابتدای فایل و دستور
\printindex
را در انتهای آن برای استفاده از سیستم نمایهسازی لاتک اضافه کردهام. بعد از آن، دستوری به اسم \myindex
به صورت
\newcommand{\myindex}[1]{#1\index{#1}}
تعریف کردم و بعد دستور
\let\textsf\myindex
را بعد از آن قرار دادم که کارش این است که دستور \textsf
را برابر \myindex
قرار میدهد. دلیل استفاده از دستور \textsf
این است که (۱) این دستور در متن فارسی و یا حداقل در متن شما به کار نمیرود. (۲) میانبر این دستور، Ctrl+Shift+A
است که در ویرایشگرهایی مثل تکمیکر و تکاستودیو تعریف شده است و بنابراین سرعت عمل شما را بالا میبرد.
حال تنها کاری که شما باید بکنید، این است که مثلاً سه کلمه اول هر بیت را با موس انتخاب کنید و بعد کلیدهای Ctrl+Shift+A
را بزنید تا آن کلمهها نمایه شوند. بعد از آن، کافی است مثل متنهای عادی، دستور ایجاد نمایه را اجرا کنید تا این کلمهها به انتهای کتاب اضافه شوند.
بدیهی است که برای بیتهایی که از امروز به بعد تایپ میکنید، میتوانید مستقیماً از دستور \myindex
استفاده کنید. برای تغییر کلمه «نمایه» هم میتوانید از دستور
\renewcommand{\indexname}{نمایه بیتها}
استفاده کنید. خروجی من به صورت زیر است. بدیهی است که میتوانید سرواژهها را هم حذف کنید؛ هر چند بودن آن مفید است.