在一个多作者项目中,我注意到,如果环境以换行符 ( ) 结尾,则verse
紧跟在任何环境之后的环境第一行中会出现奇怪的缩进:ragged2e
\\
\documentclass{article}
\usepackage{ragged2e,verse}
\begin{document}
\begin{FlushLeft}
Hallo\\
Hallo\\
\end{FlushLeft}
\begin{verse}
Hallo\\
Hallo
\end{verse}
\end{document}
删除尾随换行符时或使用非 ragged2e 等效环境(flushleft
在本例中)时不会发生这种情况:
当然,通过删除(不必要的)尾随换行符可以轻松解决这个问题,但由于这是一个多作者项目,我想实现一个更通用的解决方案。在实际文档中,两个环境的内容都作为命令的参数给出,因此有一些“修补”解决方案的空间。
答案1
这是一个错误,完全是我的错。我在 ragged2e repo 中准备了一个修复程序,并在完成测试后发布 ragged2e 的新版本。完成后我可以在这里添加注释。
答案2
使用 ragged2e,每行实际上都是一个段落。并且\\
命令被重新定义,并将(全局)代码添加到下一个段落的开头,从而删除其缩进。
因此,如果在最后一行后面有一个,\\
则下一段将没有缩进,并且在像诗句环境这样的列表中,它会混淆间距。您可以清除钩子(但最好不要用 结束段落和类似的东西\\
):
\documentclass{article}
\usepackage{ragged2e}
\usepackage{verse}
\AddToHook{env/RaggedRight/after}{\ClearHookNext{para/begin}}
\begin{document}
\begin{RaggedRight}
Hallo\\
Hallo\\
\end{RaggedRight}
\begin{verse}
Hallo\\
Hallo
\end{verse}
\end{document}
答案3
\documentclass{article}
\usepackage{ragged2e,verse}
\begin{document}
\begin{FlushLeft}
Hallo\\
Hallo\\
\end{FlushLeft}
\begin{verse}
Hallo\\
Hallo
\end{verse}
\end{document}
生产
在 texlive 2021 或更早版本中
在 texlive 2022 或更高版本中。
这意味着其中一个包需要更新,可能是为了匹配格式中的段落钩子的添加。
这些包可能很容易更新(我稍后会看),但在此之前没有尾随\\
是最简单的(也可以使用Flush...
环境形式而不是Ragged..
用于命令使用的形式。类似于标准乳胶flushleft
作为环境形式\raggedright
)