picinpars 和 ragged2e 在切换对齐时似乎会产生容量超出错误

picinpars 和 ragged2e 在切换对齐时似乎会产生容量超出错误

我遇到了一个奇怪的问题,似乎是由 ragged2e 包引起的。我需要能够在右侧显示一个图像,并在其周围右对齐换行文本。但是,当我必须切换对齐方式时,它会导致堆栈错误。如果不更改对齐方式,它可以正常工作。

! TeX capacity exceeded, sorry [input stack size=5000].
\\->\ifhmode \unskip \else \@nolnerr \fi \par 
                                          \@ifstar {\nobreak \@xcentercr...
l.11 ...dLeft نلي بلانت السياحي. \\
                                              [\baselineskip]
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.


Here is how much of TeX's memory you used:
 13893 strings out of 493734
 287245 string characters out of 6146347
 328326 words of memory out of 5000000
 17181 multiletter control sequences out of 15000+600000
 3696 words of font info for 21 fonts, out of 8000000 for 9000
 1328 hyphenation exceptions out of 8191
 5000i,11n,39p,10385b,271s stack positions out of
 5000i,500n,10000p,200000b,80000s
 No pages of output.

MWE 或者说不完整示例是:

\documentclass[a4paper,demo]{article}
\usepackage{fontspec}
\usepackage{graphicx}
\usepackage{picinpar}
\usepackage{fullpage}
\usepackage{ragged2e}
\usepackage[labelformat=empty]{caption}
\usepackage[none]{hyphenat}
\begin{document}\sloppy
\begin{tabwindow}[0,r,{\begin{tabular}[t]{r}\includegraphics[width=0.28
\textwidth]{bob}\\
\end{tabular}},{ \ }] \RaggedLeft نلي بلانت السياحي. \\[\baselineskip]
\end{tabwindow}\end{document}

值得注意的是,图像“bob”只是我在网上找到的一张随机图像,发现任何图像都会引发这个问题。

答案1

我是的作者ragged2e。我正在尝试分析这个问题。

首先:最新版本picinpar是 1993-07-13 的 - 所以它早于 LaTeX2e。而且恕我直言,它是一种 hack。

问题的原因似乎是picinpar重新定义\par\\- 并ragged2e改变了的语义,\\以便它调用\par(它将\let它转换为\@centercr),这导致了无限循环,TeX 最终检测到了该循环(通过超出的输入堆栈)。

我是非常不愿意尝试去适应ragged2epicinpar或者甚至不愿意花更多的时间在这上面)——恕我picinpar直言,它太老了,它试图解决的问题应该用一个新的(LaTeX3?)包来解决。

答案2

您应该将其括\RaggedLeft نلي بلانت السياحي.在括号中才能使其发挥作用。

{\RaggedLeft نلي بلانت السياحي.}

事实上,这是可行的

\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{graphicx}
\usepackage{picinpar}
\usepackage{fullpage}
\usepackage{ragged2e}
\usepackage[labelformat=empty]{caption}
\usepackage[none]{hyphenat}
\begin{document}\sloppy
\begin{tabwindow}[0,r,{%
\begin{tabular}[t]{r}\includegraphics[width=0.28
\textwidth]{example-image}
\end{tabular}},{ \ }] {\RaggedLeft نلي بلانت السياحي.} \\[\baselineskip]
\end{tabwindow}
\end{document} 

相关内容