تالار گفتگوی پارسیلاتک
لاتک LATEX => سبک نوشتار => نويسنده: hrzazad در ژوئن 11, 2012, 09:15:21 pm
-
سلام.
میخواستم در محیط proof مربع در انتهای اثبات ظاهر نشه. چیکارکنم.
-
کد زیر رو ببینین.
\documentclass{article}
\usepackage{amsthm}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\renewcommand{\qedsymbol}{}
\begin{document}
\begin{proof}
این یک اثبات است.
\end{proof}
\end{document}
-
ممنون. کد جواب میده. ولی با توجه به فایل ضمیمه شده دو تا مشکل وجود داره.
۱- در فایل ضمیمه شده با فعال شدن دستور \renewcommand{qedsymbol}{} مربع حذف میشه ولی خطی که مربع در اون قرار گرفته خذف نمیشه و بصورت فضای خای باقی میمونه.
۲- اگر بخوام مربع از اینجایی که الان هست حذف بشه (البته با خذف خطی که در اون قرار گرفته) و دقیقا بعد از آخرین کلمه یا فرمول اثبات ظاهر بشه چه کار باید کرد؟
-
\documentclass{article}
\usepackage{amsthm,amsmath}
\usepackage{xepersian}
\makeatletter
\bidi@AtEndEnvironment{proof}{\let\popQED\relax}
\makeatother
\begin{document}
\begin{proof}
برهان بهصورت زیر است
\begin{align}
&m(X\odot (Y\oplus Z))=m(X).m(Y\oplus Z)=m(x).(m(Y)+m(Z))=\nonumber \\
&m(X).m(Y)+m(X).m(Z)=m((X\odot Y)\oplus( X\odot Z)).\nonumber
\end{align}
\end{proof}
در بالا یک اثبات را میبینیم.
\end{document}
-
ممنون. کد برای سوال اول جواب میده. برای سوال دوم باید مربع رو دستی بعد از آخرین کلمه یا فرمول اضافه کنم یا راهی وجود داره که خودکار برای همه اثباتها انجام بشه؟
-
\documentclass{article}
\usepackage{amsthm,amsmath}
\usepackage{xepersian}
\makeatletter
\bidi@AtEndEnvironment{proof}{\let\popQED\relax\qedsymbol}
\makeatother
\begin{document}
\begin{proof}
برهان بهصورت زیر است
\begin{align}
&m(X\odot (Y\oplus Z))=m(X).m(Y\oplus Z)=m(x).(m(Y)+m(Z))=\nonumber \\
&m(X).m(Y)+m(X).m(Z)=m((X\odot Y)\oplus( X\odot Z)).\nonumber
\end{align}
و این ادمه اثبات است.
\end{proof}
در بالا یک اثبات را میبینیم.
\end{document}
-
این کد فقط برای اثباتهایی که به یک کلمه ختم میشن جواب میده و برای اثباتهایی که به یک فرمول ختم میشن جواب نمیده. مثلا در همین کد بالا اگر «و این ادامه اثبات است.» حذف شود باز هم مربع در یک سطر پایینتر ظاهر میشود.
-
این کد فقط برای اثباتهایی که به یک کلمه ختم میشن جواب میده و برای اثباتهایی که به یک فرمول ختم میشن جواب نمیده. مثلا در همین کد بالا اگر «و این ادامه اثبات است.» حذف شود باز هم مربع در یک سطر پایینتر ظاهر میشود.
واقعاُ حرفت با عقل جور درمیاد؟ شما دارید دو تا محیط مختلف رو تو در تو استفاده میکنید پس کد من کار درستی اتجام میده که در پایان محیط proof اون مربع رو قرار میده، شما ممکنه فرمول رو با هزار و یک گونه محیط قرار بدید، محیط proof از کجا باید بفهمه که شما از چه محیطی استفاده کردید و بعد از اینکه تشخیص داد از چه محیطی استفاده کردید، آخر سر اون مربع رو آخر اون محیط قرار بده؟
-
واقعاُ حرفت با عقل جور درمیاد؟ شما دارید دو تا محیط مختلف رو تو در تو استفاده میکنید پس کد من کار درستی اتجام میده که در پایان محیط proof اون مربع رو قرار میده، شما ممکنه فرمول رو با هزار و یک گونه محیط قرار بدید، محیط proof از کجا باید بفهمه که شما از چه محیطی استفاده کردید و بعد از اینکه تشخیص داد از چه محیطی استفاده کردید، آخر سر اون مربع رو آخر اون محیط قرار بده؟
پس با این اوصاف در مورد اثباتهایی که به فرمول ختم میشن، باید مربع رو دستی بذاریم انتهای فرمول. اگه راه دیگهای هست راهنمایی کنید.
-
۲- اگر بخوام مربع از اینجایی که الان هست حذف بشه (البته با خذف خطی که در اون قرار گرفته) و دقیقا بعد از آخرین کلمه یا فرمول اثبات ظاهر بشه چه کار باید کرد؟
بلاخره این مربع باشه یا نباشه؟ ;D
برای حل این مشکل، باید از دستور qedhere\ به صورت زیر استفاده کنین.
\documentclass{article} \usepackage{amsthm,amsmath}
\usepackage{xepersian}
\settextfont{XB Niloofar}
%\renewcommand{\qedsymbol}{}
\begin{document}
\begin{proof}
برهان بهصورت زیر است
\begin{align}
&m(X\odot (Y\oplus Z))=m(X).m(Y\oplus Z)=m(x).(m(Y)+m(Z))=\nonumber \\
&m(X).m(Y)+m(X).m(Z)=m((X\odot Y)\oplus( X\odot Z)).\nonumber \qedhere
\end{align}
\end{proof}
در بالا یک اثبات را میبینیم.
\end{document}
و اگه میخواین اون مربع ظاهر نشه و در عین حال، خط اضافی هم تولید نشه، دستور
\renewcommand{\qedsymbol}{}
رو فعال کنین.
-
پس با این اوصاف در مورد اثباتهایی که به فرمول ختم میشن، باید مربع رو دستی بذاریم انتهای فرمول. اگه راه دیگهای هست راهنمایی کنید.
تا اونجایی که من میدونم، تنها راهحل، استفاده از همین دستور qedhere\ هستش که توی پست قبلی دربارهش نوشتم.
-
با عرض سلام
قبلا از TeX Live 2011 استفاده میکردم، بعد از مدتی ویندوزم رو عوض کردم و همون TeX Live 2011 رو نصب کردم ولی از همون خط مربوط به مربع (\bidi@AtEndEnvironment{proof}{\let\popQED\relax\qedsymbol}) خطا میگیره خطا بصورت زیره:
! Undefined control sequence.
l.101 \bidi@AtEndEnvironment
{proof}{\let\popQED\relax\qedsymbol}
در حالی که قبلا کار میکرد. دلیلش چیه؟
(در ضمن هم با TeXworks و هم با TeXmaker خطا ایجاد میشه.)
logفایل رو هم ضمیمه کردم.
-
با عرض سلام
قبلا از TeX Live 2011 استفاده میکردم، بعد از مدتی ویندوزم رو عوض کردم و همون TeX Live 2011 رو نصب کردم ولی از همون خط مربوط به مربع (\bidi@AtEndEnvironment{proof}{\let\popQED\relax\qedsymbol}) خطا میگیره خطا بصورت زیره:
! Undefined control sequence.
l.101 \bidi@AtEndEnvironment
{proof}{\let\popQED\relax\qedsymbol}
در حالی که قبلا کار میکرد. دلیلش چیه؟
(در ضمن هم با TeXworks و هم با TeXmaker خطا ایجاد میشه.)
logفایل رو هم ضمیمه کردم.
شاید دستورهای دیگهای توی فایلتون باشه که باعث ایجاد این مشکل شدن. لطفاً یه فایل کمینه پیوست کنین که مشکل رو نشون بده. فایل لاگ مربوط به این فایل رو هم پیوست کنین.
-
پاسخ شماره 3 همین موضوع رو امتحان کردم و همون خطا رو گرفتم.texفایل و logفایل همون پاسخ شماره ۳ رو پیوست کردم.
البته وقتی با TeXmaker اجراش میکنم از همون خط خطا میگیره ولی pdf رو میسازه که البته مشکل داره.مثلا دقیقا اول متن عبارت proof و یه مربع میذاره و اعداد موجود در فرمولهای ریاضی بصورت لاتین درج میشن.
ممکنه مشکل از TeX Live من باشه؟
-
پاسخ شماره 3 همین موضوع رو امتحان کردم و همون خطا رو گرفتم.texفایل و logفایل همون پاسخ شماره ۳ رو پیوست کردم.
البته وقتی با TeXmaker اجراش میکنم از همون خط خطا میگیره ولی pdf رو میسازه که البته مشکل داره.مثلا دقیقا اول متن عبارت proof و یه مربع میذاره و اعداد موجود در فرمولهای ریاضی بصورت لاتین درج میشن.
ممکنه مشکل از TeX Live من باشه؟
متاسفانه راهحلی به ذهنم نمیرسه.
-
با عرض سلام
قبلا از TeX Live 2011 استفاده میکردم، بعد از مدتی ویندوزم رو عوض کردم و همون TeX Live 2011 رو نصب کردم ولی از همون خط مربوط به مربع (\bidi@AtEndEnvironment{proof}{\let\popQED\relax\qedsymbol}) خطا میگیره خطا بصورت زیره:
! Undefined control sequence.
l.101 \bidi@AtEndEnvironment
{proof}{\let\popQED\relax\qedsymbol}
در حالی که قبلا کار میکرد. دلیلش چیه؟
(در ضمن هم با TeXworks و هم با TeXmaker خطا ایجاد میشه.)
logفایل رو هم ضمیمه کردم.
تکلایوت اونقدر بروز نیست که:
۱) بسته biditools وجود داشته باشه یا
۲) بسته biditools وجود داره اما دستور \bidi@AtEndEnvironment تعریف نشده.
راهحل: نصب تکلایو 2012 و بروز کردنش یا اگر کمی بیشتر صبر کنی، نصب تکلایو 2013.
-
ممنون از آقای دامنافشان و آقای کارنپهلو.
همون TeX Live 2012 که بصورت فایل iso هست رو نصب کردم، مشکل حل شد(بدون بروز رسانی).
جسارتا فکر کنم با توجه به مواردی که در این پست مطرح شده اگه موضوعش تغییر کنه بهتره.مثلا: حذف علامت مربع در انتهای محیط proof و همچنین قرار گرفتن آن بعد از آخرین کلمهی اثبات.
در ضمن جا داره از همه دوستانی که تو این سایت فعالیت میکنن و به سؤالات جواب میدن تشکر کنم. بدون شک حضورشون تو این سایت باعث دلگرمی همه کاربران هست.