قبل از خواندن پاسخ، اگر پرسش و پاسخ مشکل در استفاده از بستهی 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}