اولین بار است که به اینجا می‌آیید؟ راهنمای سایت را بخوانید!
Close Sidebar
وب‌سایت پرسش و پاسخ پارسی‌لاتک جایی برای پرسش و پاسخ درباره سیستم حروف‌چینی لاتک و بسته زی‌پرشین است. در اینجا می‌توانید سوال‌های خود را بپرسید و به سوال‌های دیگران پاسخ دهید.

محبوب‌ترین برچسب‌ها

رفع خطا جدول ریاضی‌نویسی مراجع شکل شماره‌گذاری xepersian فهرست مطالب منابع فونت bidi parsilatex اسلاید تک‌لایو پانویس زی‌پرشین بیب‌تک بیمر پاورقی نماد tikz ویرایشگر biditexmaker سربرگ قالب bibtex هدر رسم شکل واژه‌نامه اندازه فونت texstudio ارجاع‌دهی ماتریس bidipresentation beamer عنوان فصل رسم جدول عنوان شکل اسلاید فارسی گراف حاشیه زیرنویس شکل فرمول‌نویسی محیط قضیه اعمال نشدن تغییرات در پی‌دی‌اف حروف‌چینی کد رنگ عدم اجرا مکان شکل متن لاتین و فارسی tabriz_thesis شماره صفحه فارسی‌تک شماره فصل فهرست اشکال tikzpicture listings align فرمول خروجی نیم‌فاصله فاصله‌گذاری enumerate بسته biditools itemize texlive2015 فرمول چندضابطه‌ای نمودار شماره‌گذاری صفحات glossaries biditufte-book سوال امتحانی نمایه کپشن تصویر الگوریتم شماره پاورقی کادر texlive2016 پیوست‌ hyperref texmaker خطا فونت فارسی و انگلیسی دیاگرام چپ‌چینی فصل‌نویسی تنظیم جدول اندیس لاتک تک لایو 2015 به‌روزرسانی بسته aimc46 lollipop میک‌تک سوال چهارگزینه‌ای کاما iust-thesis ماکرونویسی جستجوی معکوس تورفتگی texworks پوستر فرمول طولانی xindy multicol فهرست جداول subfigure pdf زیرنویس شماره فرمول فاصله بین خطوط حروف‌چینی چندستونی میکروسافت ورد header winedt قالب پایان‌نامه آکولاد فلش عنوان بخش شماره گذاری فاصله سطرها اعداد فارسی شکست خط صفر توخالی بیرون‌زدگی شمارنده فصل جایابی تصویر caption کمک مالی فاصله خطوط tex-programming فهرست نمادها قرآن اوبونتو غلط‌گیری املایی kashida tabriz-thesis محیط ریاضی fancyhdr عکس پانویس پاراگرافی شماره‌گذاری فرمول bidihl قالب کتاب pgfplots هایپرلینک الگوریتم‌ پیکان equation جدول افقی جداکننده شماره قسمت رسم نمودار توابع فونت ایتالیک نوشتافت رسم گراف پانویس افقی پاراگراف‌بندی وسط‌چینی افقی algorithm2e فونت بولد رسم کادر بولد متلب tabular extrafootnotefeatures text baselineskip متن فارسی و انگلیسی tcolorbox فرمول چندخطی neveshtuft شکستن جدول بازیابی اطلاعات آپدیت texlive شعر ایتالیک لوگو sumatra bidipoem matlab eps xelatex fontspec texlive2014 زیرنویس لاتین tex computeautoilg نصب تک‌لایو متن دوستونه عنوان جدول عدم نمایش در خروجی xebaposter نمونه اسلاید. خطا یابی خطا در اجرا متن دو ستونه اجرا نشدن فایل rsync
1 نفر آنلاین
0 عضو و 1 مهمان در سایت حاضرند
بازدید امروز: 1296
بازدید دیروز: 7243
بازدید کل: 3442038

نوشتن شعر در محیط epigraph و خطای There's no line here to end.

0 رای
40 بازدید

سلام
می‌خواهم یک قطعه شعر را در محیط epigraph بنویسم. کد زیر خطا می‌دهد. دلیل آنرا می‌دانید؟

\documentclass{book}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{amsmath}
\usepackage{epigraph}
\usepackage{bidipoem}
\usepackage[extrafootnotefeatures]{xepersian}
\settextfont[Scale=1]{XB Niloofar}
\setlatintextfont[Scale=.95]{Times New Roman}
\setdigitfont[Scale=.9]{Yas}
\defpersianfont\mysmallfont[Scale=.9]{XB Niloofar}
\defpersianfont\chapfont[Scale=3.3]{XB Niloofar}
\defpersianfont\norfont[Scale=1]{XB Niloofar}

\newcommand{\BZ}[2]
{
    \epigraph{
        \justifying
        \noindent
        \textit{{#1}}
    }{#2}
}


\begin{document}

\BZ{
\begin{traditionalpoem}
خرد باید و دانش و راستی  & که کژی بکوبد در کاستی \\
که دانش به شب پاسبان منست  & خرد تاج بیدار جان منست 
\end{traditionalpoem}
}{فردوسی}
سوال شده 21 اردیبهشت 1396 توسط رضا (87 امتیاز)
برچسب گذاری دوباره 25 اردیبهشت 1396 توسط وحید دامن‌افشان

1 پاسخ

+1 رای
 
بهترین پاسخ

برای توضیح کلی خطا اینجا رو ببینید. اتفاقی که می‌افته اینه که بسته epigraph در انتهای آرگومان نخست دستور \epigraph یک \\ وارد می‌کند حال انکه آرگومان نخست دستور محیط traditionalpoem است که احتیاجی به رفتن به سطر بعد نداره زیرا که سطری وجود نداره در پایان این محیط که \\ بخواد اون رو پایان بده. برای حل مشکل کافیه یک \leavevmode در تعریف دستور \BZ پس از \textit{#1} (یعنی درست در انتهای آرگومان نخست دستور \BZ) وارد کنید هر چند با این کار دو سطر خالی در انتهای شعر وجود خواهد داشت که یکی را محیط traditionalpoem وارد کرده و دیگری توسط دستور \epigraph وارد شده. اگر دو سطر خالی را نمی‌پسندید باید یا تعریف دستور \epigraph را تغییر دهید و یا دستور تازه‌ای تعریف کنید تا آن \\ حذف شده باشد.

پاسخ داده شده 21 اردیبهشت 1396 توسط وفا (18,278 امتیاز)
انتخاب شده 21 اردیبهشت 1396 توسط رضا
سلام، ممنون از پاسخ مفصلتان، اگر درست فهمیده باشم منظورتان این هست که در پایان traditionalpoem سر پاراگراف می‌رود (با اینکه بیت آخر \\ ندارد) و epigraph هم می‌خواهد سرخط جدید برود که این خطا تولید می‌شود. می‌شود بفرمایید چطور تعریف دستور \epigraph را عوض کنم؟ یا یک خط به بالا برگردم (گرچه این راه خوبی نیست، این نوشته بالای صفحه هست و شعر هم کوتاه است)
قبل از \begin{document} کد زیر را قرار بدهید:

\makeatletter
\bidi@patchcmd{\@epitext}{\\}{}{}{}
\makeatother

در اینصورت نیازی به اون \leavevmode ی که در پاسخم گفتم نیست. در واقع در دو جا (تنها در بسته epigraph) دستور \\ وارد می‌شود: یکی در دستور \@epitext که در دستور \epigraph استفاده شده و دیگری هم داخل خود دستور \epigraph وجود دارد. در واقع یکی از اینها اضافه است که باگ بسته epigraph می‌باشد و همین \\ اضافه باعث ایجاد خطا در نمونه شما می‌شود.
خیلی عالی، ممنون
اگر می‌خواهید که دستور \epigraph در سایر موارد (آرگومان نخست آن محیط traditionalpoem نباشد) تعریف زیر بهتر است:

\makeatletter
\bidi@patchcmd{\@epitext}{\\}{\ifvmode\else\\\fi}{}{}
\makeatother

در واقع همین تعریف باید در بسته epigraph باشد. با این تعریف تک تنها زمانی در انتهای آرگومان نخست دستور \epigraph دستور \\ را وارد می‌کند که در حالت عمودی نباشد (در حالت افقی باشد) و بنابراین در همه موارد به درستی کار خواهد کرد.
...