قبل از خواندن پاسخ، اگر پرسش و پاسخ مشکل در استفاده از بستهی todonotes را دنبال نکردهاید، لطفاً آن را بخوانید.
نسخه 16 بسته bidi که تازه به CTAN داده شده است، شامل تغییرات زیر است:
- برای حل مشکل
todonotes در متنهای راست به چپ دو محیط bidi@pgfpicture و bidi@tikzpicture تعریف شدهاند که یک خط اضافه خالی قبل یا بعد از محیط اضافه نمیکنند.
- از آنجایی که
nodeها بصورت پیشفرض در بسته tikz چپچین هستند (در اینجا منظور جهت متن نیست بلکه منظور ragged right است)، متنی که با فرمان \todo قرار میگیرد چپچین است. برای راستچین کردن آن گزینهای به نام align تعریف شده است که معادل همان گزینه align بسته tikz است. مقدار پیشفرض این گزینه left است و چنانچه بخواهید متنی که با فرمان \todo حروفچینی میشود، راستچین باشد دو راه دارید:
آ) فرمان \todo را به شکل زیر استفاده کنید:
\todo[align=right]{...}
ب) دستور \@bidi@todonotes@align را از نو تعریف کنید:
\renewcommand{\@bidi@todonotes@align}{right}
بصورت خلاصه، تغییر نسخه 16 بسته bidi این است که مشکل گزارششده با بسته todonotes (حداقل با فایل کمینهای که در مشکل در استفاده از بستهی todonotes قرار دارد) حل شده است.
یک نمونه
چنانچه با استفاده از نسخه 16 بسته bidi فایل زیر را پردازش کنید:
\documentclass{article}
\usepackage[nopar]{ptext}
\usepackage{todonotes}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
چند کلمه همین جوری می نویسیم تا خط پر شود و به
\todo[align=right,textdirection=righttoleft]{
این یک متن دراز است که من در حال نوشتنش هستم و از نوشنش لذت میبرم و نمیدانم که شما هم این چنین احساسی دارید یا نه
}
انتها برسد و بقیه متن که در حال نوشتن آن هستیم و کمی متن بیشتری مینویسیم چند کلمه همین جوری می نویسیم تا خط پر شود و به چند کلمه همین جوری می نویسیم تا خط پر شود و به
\ptext[1-2]
\todo[align=right,fancyline,color=red!30,textdirection=lefttoright]{
این یک متن دراز است که من در حال نوشتنش هستم و از نوشنش لذت میبرم و نمیدانم که شما هم این چنین احساسی دارید یا نه
}
\ptext[1-2]
\end{document}
خروجی زیر را میگیرید:

ویرایش
با توجه به نظرات این پاسخ نسخه 16 بسته bidi را از دوباره به CTAN فرستادم. در این نسخه برای کنترل جهت متن فرمان \todo گزینهای به نام textdirection اضافه شده است که دو مقدار دارد righttoleft و lefttoright. با توجه به این موضوع نمونه قرار داده شده و تصویرش بروز شدهاند. بنابراین دیگر نیازی به استفاده از دستور \rl داخل دستور \todo نیست. توجه داشته باشید از آنجایی که \todo یک دستور است و محیط نیست تغییر جهت متن فرمان \todo بصورت global است. این به این معنی است که اگر \todo اولی را بصورت زیر به کار ببرید:
\todo[align=right,textdirection=righttoleft]{...}
و دومی را بصورت:
\todo[align=right]{...}
جهت متن هر دو \todo راست به چپ خواهد بود.
انجام دادن تنظیمات بصورت یکباره
چنانچه میخواهید گزینههای textdirection و align یکباره تنظیم شوند میتوانید از دستور \presetkeys استفاده نمایید:
\documentclass{article}
\usepackage[nopar]{ptext}
\usepackage{todonotes}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\presetkeys{todonotes}{align=right,textdirection=righttoleft}{}
\begin{document}
چند کلمه همین جوری می نویسیم تا خط پر شود و به
\todo{
این یک متن دراز است که من در حال نوشتنش هستم و از نوشنش لذت میبرم و نمیدانم که شما هم این چنین احساسی دارید یا نه
}
انتها برسد و بقیه متن که در حال نوشتن آن هستیم و کمی متن بیشتری مینویسیم چند کلمه همین جوری می نویسیم تا خط پر شود و به چند کلمه همین جوری می نویسیم تا خط پر شود و به
\ptext[1-2]
\todo{
این یک متن دراز است که من در حال نوشتنش هستم و از نوشنش لذت میبرم و نمیدانم که شما هم این چنین احساسی دارید یا نه
}
\ptext[1-2]
\end{document}