این مشکل ارتباطی با tikz
یا محیط tikzpicture
ندارد بلکه به استفاده از محیط minipage
مربوط است. در تکلایو ۲۰۱۱ بسته bidi
بصورت اشتباه محیط minipage
را تغییر میداد که شما خروجی درست میگرفتید اما در واقع مشکلات بسیاری تولید میکرد که بعداً درست شد اما یادم نیست که کی این کار را انجام دادم. اما چرا این مشکل روی میدهد؟ هنگامی که محیط minipage
را شروع میکنی، وارد محیط عمودی میشوی (vmode
) و اگر متنی قبل از محیط enumerate
وجود نداشته باشد، تورفتگی محیط enumerate حذف میشود در واقع پهنای \vbox
ی که محتوای محیط minipage
در آن واقع است، کم میشود. برای گرفتن خروجی مناسب در این حالت (هنگامی که داخل محیط minipage
قبل از محیط enumerate
هیچ متنی قرار ندارد) باید از حالت عمودی خارج شوی یعنی باید یک \leavevmode
در ابتدای محیط minipage
قرار دهی. بنابراین نمونه شما باید بصورت تغییر کند:
\documentclass[11pt,oneside]{letter}
\usepackage{tikz}
\usepackage{xepersian}
\settextfont{Yas}
\tikzstyle{textBoxStyle} = [fill=gray!20]
\newcommand{\textBox}[1]{%
\begin{tikzpicture}\node [textBoxStyle] (box) {%
\setRTL%
\begin{minipage}{\textwidth}\leavevmode%
#1%
\end{minipage}};%
\end{tikzpicture}%
}
\begin{document}
\textBox{%
فقط متن بدون استفاده از محیط شمارشی.
و به درستی کار میکند.
}
\textBox{%
\begin{enumerate}
\item محیط شمارشی در داخل یک \lr{tikzpicture} استفاده شده است.
\item دارای مشکل است. تفاوت پهنای این کادر و کادر بالایی را ببینید.
\item در \lr{texlive2011} به درستی کار میکند.
\item مشکل در \lr{texlive2014} وجود دارد، دیگر نسخهها را بررسی نکردهام.
\end{enumerate}
}
\end{document}
و خروجی بصورت زیر خواهد بود که من مشکلی در آن نمیبینم:
در مورد نمونه لاتین شما، شما خودتون اشتباه دارید از دستورات استفاده میکنید. شما محیط latin
رو بعد از محیط enumerate
استفاده کردید. چون قبلاً جهت متن راست به چپ بوده، وقتی محیط enumerate
رو ایجاد میکنید تک تورفتگی رو از سمت راست به چپ ایجاد کرده و اینکه شما بیایید و بعد از محیط enumerate
محیط latin
رو قرار بدهید، فقط دارید جهت متن رو چپ به راست میکنید اما کارتون تورفتگی رو متأثر نمیکنه. برای خروجی مناسب باید قبل از محیط enumerate
از محیط latin
استفاده کنید چون محیط enumerate
یا بهتر بگم محیط list
باید بدونه جهت متن چیه که براساس اون تورفتگی مناسب رو ایجاد کنه (تورفتگی از سمت راست یا تورفتگی از سمت چپ). بنابراین اینطوری باید باشه:
\textBox{%
\begin{latin}
\begin{enumerate}
\item The issue is also present on ``latin" environment, but my workaround is not useful here.
\item Indeed this one is also present by using ``texlive2011``.
\item texlive2011: The width of the text box is correct, just numbers are out.
\item texlive2014: The width of the text box is incorrect and numbers are out.
\end{enumerate}
\end{latin}
}
خروجی زیر رو تولید میکنه که مشکلی نداره: