我想排版编号行的诗歌。使用以下代码:
\documentclass[a4paper,12pt]{article}
\usepackage[colorlinks=true]{hyperref}
\usepackage{xepersian}
\settextfont[Scale=1.2]{Yas}
\usepackage{bidipoem}
\renewcommand\poemcolsepskip{1cm}
\newcount\LineNumber \newcount\templinenumber
\newdimen\linenumberskip \linenumberskip=-0.75em
\chardef\linestep=1
\def\poemlinenumber{%
\advance\LineNumber1
\templinenumber=\LineNumber
\computelinenumber
}
\def\computelinenumber{%
\ifnum\templinenumber>\linestep
\advance\templinenumber-\linestep
\expandafter\computelinenumber
\else
\ifnum\templinenumber=\linestep
\leavevmode\rlap{\kern\linenumberskip\footnotesize\the\LineNumber}%
\fi
\fi
}
\newenvironment{numberedtraditionalpoem}
{\everypar{\poemlinenumber}
\begin{traditionalpoem}}
{\end{traditionalpoem}}
\begin{document}
\begin{numberedtraditionalpoem}
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید\\
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید
\end{numberedtraditionalpoem}
\end{document}
问题是诗歌之间的文字。像诗歌 Numberd 这样的文字。请帮忙。
答案1
类似的问题昨晚在 ParsiLaTeX 论坛上被问到这个问题。
这几乎是用户提问内容的粗略翻译(从波斯语到英语)(我认为两个用户是同一个人,注意通用名称ata
):
我如何将一些普通文本(不是诗歌)放入
numberedtraditionalpoem
不编号的文本中?
解决方案是定义\interpoemtext
类似于包\intertext
的命令amsmath
:
\documentclass[a4paper,12pt]{article}
\usepackage[colorlinks=true]{hyperref}
\usepackage{xepersian}
\settextfont[Scale=1.2]{Yas}
\usepackage{bidipoem}
\renewcommand\poemcolsepskip{1cm}
\newcount\LineNumber \newcount\templinenumber
\newdimen\linenumberskip \linenumberskip=-0.75em
\chardef\linestep=1
\def\poemlinenumber{%
\advance\LineNumber1
\templinenumber=\LineNumber
\computelinenumber
}
\def\computelinenumber{%
\ifnum\templinenumber>\linestep
\advance\templinenumber-\linestep
\expandafter\computelinenumber
\else
\ifnum\templinenumber=\linestep
\leavevmode\rlap{\kern\linenumberskip\footnotesize\the\LineNumber}%
\fi
\fi
}
\newenvironment{numberedtraditionalpoem}
{\everypar{\poemlinenumber}
\begin{traditionalpoem}}
{\end{traditionalpoem}}
\makeatletter
\newbox\interpoemtext@box
\newcommand{\interpoemtext}{\PackageError{bidipoem}{Invalid use of \string\interpoemtext}\@eha}
\def\interpoemtext@{%
\def\interpoemtext##1{%
\ifvmode\else\\\@empty\fi
\noalign{%
\penalty\postdisplaypenalty\vskip\belowdisplayskip
\setbox\interpoemtext@box\vbox{\normalbaselines
\everypar{}
\parfillskip=0pt plus 1fil
\ifdim\linewidth=\columnwidth
\else \parshape\@ne \@totalleftmargin \linewidth
\fi
\noindent##1\par}%
\unvbox\interpoemtext@box%
\penalty\predisplaypenalty\vskip\abovedisplayskip%
}%
}}
\bidi@preto{\@traditionalpoem}{\interpoemtext@}
\makeatother
\begin{document}
\begin{numberedtraditionalpoem}
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید\\
\interpoemtext{%
ین یک متن آزمایشی است.این یک متن آزمایشی است.این یک متن آزمایشی است.این یک متن آزمایشی است.%
}
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید
\end{numberedtraditionalpoem}
\end{document}
这将产生以下输出:
我猜这就是问题所问的。
答案2
感谢@VafaKhalighi。这里还有另一种方法,即使用两个环境 并用替换计数器numberedtraditionalpoem
的定义,在这种情况下,计数器的值可以在环境之外使用。\LineNumber
\newcounter{LineNumber}
numberedtraditionalpoem
要重置计数器只需添加 \setcounter{LineNumber}{0}
。
代码
\documentclass[a4paper,12pt]{article}
\usepackage[colorlinks=true]{hyperref}
\usepackage{xepersian}
\settextfont[Scale=1.2]{Amiri}
\usepackage{bidipoem}
\renewcommand\poemcolsepskip{1cm}
\newcounter{LineNumber} \newcount\templinenumber
\newdimen\linenumberskip \linenumberskip=-0.75em
\chardef\linestep=1
\def\poemlinenumber{%
\addtocounter{LineNumber}{1}
\templinenumber=\value{LineNumber}
\computelinenumber
}
\def\computelinenumber{%
\ifnum\templinenumber>\linestep
\advance\templinenumber-\linestep
\expandafter\computelinenumber
\else
\ifnum\templinenumber=\linestep
\leavevmode\rlap{\kern\linenumberskip\footnotesize\theLineNumber}%
\fi
\fi
}
\newenvironment{numberedtraditionalpoem}
{\everypar{\poemlinenumber}
\begin{traditionalpoem}}
{\end{traditionalpoem}}
\begin{document}
\begin{numberedtraditionalpoem}
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید\\
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید
\end{numberedtraditionalpoem}
ین یک متن آزمایشی است.این یک متن آزمایشی است.این یک متن آزمایشی است.این یک متن آزمایشی است.
\begin{numberedtraditionalpoem}
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید\\
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید
\end{numberedtraditionalpoem}
\setcounter{LineNumber}{0}
\bigskip
\begin{numberedtraditionalpoem}
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید\\
ازدست و زبان که برآید & کزعهده ی شکرش بدرآید
\end{numberedtraditionalpoem}
\end{document}