وقتی از گزینه nonamebreak
بسته natbib
استفاده میکنید، دستور \NAT@nmfmt
که بصورت عادی تعریف زیر را دارد
\def\NAT@nmfmt#1{{\NAT@up#1}}
بصورت زیر بازتعریف میشود
\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}
که در این بازتعریف دستور \mbox
استفاده شده است که باعث میشود متن بین دو سطر شکسته نشود.
دستور \NAT@nmfm
تنها در دستور \NAT@citex
استفاده شده است و نه در دستور \@citex
. در آغاز نوشتار دستور \NAT@set@cites
اجرا میشود. کاری که این دستور (قسمتی که ما علاقهمند به آن هستیم) انجام میدهد بصورت زیر است
\ifNAT@numbers
...
\else
...
\let\@citex\NAT@citex
...
\fi
بنابراین تنها زمانی دستور \@citex
معادل دستور \NAT@citex
خواهد بود که دستور شرطی \ifNAT@numbers
نادرست باشد و زمانی که شما از گزینه numbers
استفاده میکنید این دستور شرطی مقدار درست دارد بنابراین \@citex
معادل دستور \NAT@citex
نخواهد بود.
دستور citeauthor
از دستور \@citex
استفاده میکند (آیا میتوانید دنبال کنید که چه اتفاقی میافتد؟) بنابراین برای اینکه کاری را که میخواهید انجام دهید بصورت اساسی انجام دهید باید این دستور \citeauthor
را بازتعریف کنید و به جای استفاده از \@citex
در تعریف آن از \NAT@citex
استفاده کنید. در نمونه زیر من دستور \citeauthor
را باز تعریف نکردهام بلکه دستور جدیدی به نام دستور \myciteauthor
تعریف کردهام تا مخالفتی با رفتار پیشفرض بسته natbib
نداشته باشد.
\documentclass[10pt,a4paper]{article}
\usepackage[nonamebreak,numbers]{natbib}
\usepackage[breaklinks,colorlinks,linkcolor=blue,citecolor=magenta]{hyperref}
\usepackage[Kashida,KashidaXBFix]{xepersian}
\settextfont[Scale=1.2]{Yas}
\usepackage{ifthen}
%%%%%
\makeatletter
\DeclareRobustCommand\myciteauthor
{\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
\@ifstar{\NAT@fulltrue\my@NAT@citetp}{\NAT@fullfalse\my@NAT@citetp}}
\newcommand\my@NAT@citetp{\@ifnextchar[{\my@NAT@@citetp}{\my@NAT@@citetp[]}}
\newcommand\my@NAT@@citetp{}
\def\my@NAT@@citetp[#1]{\@ifnextchar[{\NAT@citex[#1]}{\NAT@citex[][#1]}}
\makeatother
\newcommand{\mycite}[2][]{%
\ifthenelse{\equal{#1}{}}{({\myciteauthor{#2}}, {\citeyear{#2}})}{({\myciteauthor{#2}}, {\citeyear{#2}}: #1)}%
}
%%%%%%%%%%%%%
\usepackage{filecontents}
\begin{filecontents*}{mybibdb.bib}
@article{marvel99,
author = {L.M. Marvel AND C.G. Boncelet and C.T. Retter},
title = {Spread spectrum image steganography},
journal = {IEEE Trans. on Image Processing},
year = {1999},
volume = {8},
number = {8},
pages = {1075--1083},
month = {Aug},
authorfa = {مارول and بونسلت and رتر}
}
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%
\begin{document}
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با
\mycite{marvel99}
استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
\bibliographystyle{plainnat-fa}
\bibliography{mybibdb}
\end{document}