تالار گفتگوی پارسی‌لاتک

لاتک LATEX => طراحی صفحه => نويسنده: alimaximum در ژوئیه 16, 2014, 02:20:09 pm

عنوان: به هم ریختگی عنوان listings
رسال شده توسط: alimaximum در ژوئیه 16, 2014, 02:20:09 pm
سلام
من هر کاری میکنم نمیتونم به هم ریختگی عنوان کد ها رو درستش کنم. چطوری باید این مشکلو حل کنم.
تو فایل توضیح دادم.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: هادی صفی‌اقدم در ژوئیه 16, 2014, 02:32:47 pm
محیط LTR رو به داخل محیط listing منتقل کنین.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: alimaximum در ژوئیه 16, 2014, 06:22:58 pm
من هر کار کردم نشد.
میشه داخل همون فایل تغییر بدید تا بهتر متوجه شم.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: alimaximum در ژوئیه 18, 2014, 01:09:57 pm
خودم راه حلشو پیدا کردم ممنون
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: هادی صفی‌اقدم در ژوئیه 18, 2014, 01:26:52 pm
من هر کار کردم نشد.
میشه داخل همون فایل تغییر بدید تا بهتر متوجه شم.
توضیحم خیلی واضح بود و وقت و دسترسی نداتشم توی فایل برای مشا انجام بدم متاسفانه.
خودم راه حلشو پیدا کردم ممنون
خب راه حلشو بگین بقیه هم استفاده کننن! اینجا تالار گفتگوی آموزشی هست :)
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: alimaximum در ژوئیه 18, 2014, 01:57:11 pm
باید این کد رو هم اضافه کنیم :
\makeatletter
\renewcommand\lstlistingname{\if@RTLmain برنامه\else Listings\fi}
\long\def\@makecaption#1#2{%
   \vskip\abovecaptionskip
   \sbox\@tempboxa{#1: #2}%
   \ifdim \wd\@tempboxa >\hsize
     \if@RTLmain\beginR\fi#1: #2\if@RTLmain\endR\fi\par
   \else
     \global \@minipagefalse
     \hb@xt@\hsize{\if@RTLmain\beginR\fi\hfil\box\@tempboxa\hfil\if@RTLmain\endR\fi}%
   \fi
   \vskip\belowcaptionskip}%
\makeatother

توی فایل گذاشتم نمونشو.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: هادی صفی‌اقدم در ژوئیه 18, 2014, 02:25:07 pm
منظور من این بود که به این صورت بشه:
\begin{listings}
\begin{LTR}
... write code here....
\end{LTR}
\end{listings}
خیلی ممنون. اینو از کجا پیدا کردین؟
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: محمود امین‌طوسی در ژوئیه 18, 2014, 03:01:44 pm
منظور من این بود که به این صورت بشه:
\begin{listings}
\begin{LTR}
... write code here....
\end{LTR}
\end{listings}
آقا هادی روش شما اشتباه است چرا که دستورات داخل این محیط مستقیما به خروجی برده می‌شوند و لذا محیط LTR در داخل آن عمل نخواهد کرد.
خیلی ممنون. اینو از کجا پیدا کردین؟
به کدهای آقای کارن‌پهلو می‌ماند.
در واقع مشکل اصلی به این دلیل بوجود می‌آمد که محیط لیستینگ را داخل محیطهای چپ‌چین قرار میدهیم.

ضمنا در نسخه زی‌پرشینی که من دارم دستور تعریف معادل برای lstlistingname در کد اصلی زی‌پرشین ایراد دارد و خطا می‌گیرد که برای کارهای خودم آنرا در ابتدای سند خودم اصلاح می‌کردم. رفع این اشکال هم در کد داده شده هست:
باید این کد رو هم اضافه کنیم :
\makeatletter
\renewcommand\lstlistingname{\if@RTLmain برنامه\else Listings\fi}
\makeatothe
و نمی‌دانم که آیا این مشکل در نسخه‌های جدید زی‌پرشین برطرف شده است یا خیر. دوستانی که از نسخه‌هایی از زی‌پرشین استفاده می‌کنند که این دستورش مشکل دارد، دستور فوق را بعد از فراخوانی بسته زی‌پرشین قرار دهند تا مشکلشان برطرف شود.

قبل از اطلاع از شیوه‌ای که ایشان ارائه کردند من برای حل مشکل از captionof استفاده می‌کردم.
مثال پیوست هم راه حل قبلی من و هم راه حل درست جدید را به همراه مثالهایی با شماره خط فارسی و لاتین و عنوان در بالا و پایین نشان می‌دهد.
دقت فرمایید که تعویض قلم سند و استیل کد خروجی را تحت تاثیر قرار خواهد داد.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: alimaximum در ژوئیه 18, 2014, 03:44:31 pm
منظور من این بود که به این صورت بشه:
\begin{listings}
\begin{LTR}
... write code here....
\end{LTR}
\end{listings}
خیلی ممنون. اینو از کجا پیدا کردین؟

اینو از داخل یکی از مثالها پیدا کردم.
نمیدونم کوتاهتر از این هم هست یا نه.
ولی روش شما همونطور که آقای امین طوسی گفتن جواب نداد.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: هادی صفی‌اقدم در ژوئیه 18, 2014, 05:17:17 pm
روشی که گفتن حتما اصولی‌تر هست که دکتر کارن‌پهلو گفتنش.
ولی من فایل شما رو با اون روش خودم اجرا گرفتم و خروجی داد رو به‌همراه فایل log ضمیمه کردم.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: محمود امین‌طوسی در ژوئیه 18, 2014, 06:32:33 pm
ولی من فایل شما رو با اون روش خودم اجرا گرفتم و خروجی داد رو به‌همراه فایل log ضمیمه کردم.
آقا هادی نمی‌دانم چرا روش شما خطا نمی‌دهد! به همین دلیل پست قبلی خودم را ویرایش کردم.
ولی روش شما خروجی درست نمی‌دهد. اصلا هیچ کدی نمایش داده نمی‌شود.
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: هادی صفی‌اقدم در ژوئیه 18, 2014, 07:07:26 pm
آقا هادی نمی‌دانم چرا روش شما خطا نمی‌دهد! به همین دلیل پست قبلی خودم را ویرایش کردم.
ولی روش شما خروجی درست نمی‌دهد. اصلا هیچ کدی نمایش داده نمی‌شود.
ممنون باری تست این روش.
من فایل شما را اجرا گرفتم و خروجی که کدها هم دیده میشن و فایل log رو ضمیمه کردم.
البته فایل IRzar رو نداشتم الان و غیرفعالش کردم. نکنه بخاطر اینه که کدی دیده نمیشه؟ میشه فونت لاتین برای فایل تعیین کنین و نتجیه رو بفرمایین بیزحمت؟
عنوان: پاسخ : به هم ریختگی عنوان listings
رسال شده توسط: vafa در ژوئیه 18, 2014, 07:30:40 pm
سلام
من هر کاری میکنم نمیتونم به هم ریختگی عنوان کد ها رو درستش کنم. چطوری باید این مشکلو حل کنم.
تو فایل توضیح دادم.
از نسخه 14.1 بسته xepersian و نسخه 15.1 بسته bidi استفاده کن. در این نسخه امکاناتی برای جهت حروف‌چینی caption به بسته listings اضافه شده. من فایل خودت رو بر مبنای نسخه‌های جدید تغییر دادم. برای توضیحات بیشتر قسمت 2.4 بسته bidi یعنی قسمت The listings package رو بخون. کدی که قرار دادی، کامل نیست. حروف‌چینی متن caption دو قسمت داره:

۱) اگر این متن کمتر از \textwidth هست.
۲) اگر این متن بیشتر از \textwidth هست.

کد شما تنها مورد ۱ رو انجام میده و ۲ رو انجام نمیده. بنابراین بهتره از امکانات \ بسته bidi استفاده کنید. اگر تک‌لایو خودت رو طی دو سه روز آینده بروز کنی، می‌تونی از این امانات استفاده کنی.