\obeylines 不再是 LaTeX 文档中的有效指令了吗?

\obeylines 不再是 LaTeX 文档中的有效指令了吗?

我的计算设置的背景信息:MacBook Air(2019 年末型号)、MacOS 11.2.3“Big Sur”、MacTeX2021,所有更新均为最新。

考虑以下 MWE:

\documentclass{article}
%\obeylines
\begin{document}
abc
\end{document} 

它(毫不奇怪)在 pdfLaTeX、XeLaTeX 和 LuaLaTeX 下编译良好。相反,如果删除%之前的注释字符\obeylines,则会收到以下错误消息:

  • 在 pdfLaTeX 下:

    ...
    (/usr/local/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
    ! Missing \endcsname inserted.
    <to be read again> 
                       ^^M
    l.29   {l3backend-pdftex.def}{2021-03-18}{}
    
  • 在 XeLaTeX 下:

    (/usr/local/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-xetex.def
    ! Missing \endcsname inserted.
    <to be read again> 
                       ^^M
    l.29   {l3backend-xetex.def}{2021-03-18}{}
    
  • 在 LuaLaTeX 下:

    ...
    (/usr/local/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-luatex.def
    ! Missing \endcsname inserted.
    <to be read again> 
    
    l.29   {l3backend-luatex.def}{2021-03-18}{}
    

    观察:^^MLuaLaTeX 错误消息中没有,与 pdfLaTeX 和 XeLaTeX 不同。

附言:Plain-TeX 测试文档

\obeylines
abc
\bye

在 pdfTeX、XeTeX 和 LauTeX 下编译良好。

问题:这是错误吗?还是功能?有已知的解决方法吗?FWIW:我确信测试程序在 MacTeX2020 下可以很好地编译。

答案1

根据评论的社区答案

\obeylines必须使用该命令\begin{document}不是\begin{document}

背景

您可能有几行连续的输入,而您希望输出以相同的方式逐行显示。一种解决方案是\par在每行输入的末尾键入;但这有点麻烦,所以纯 TeX 提供缩写\obeylines,这导致每个行结束在输入中\par。在您说完后, \obeylines您将每输入一行获得一行输出,除非输入行以 结尾%,或者除非输入行太长而必须断开。例如,\obeylines如果您正在排版一首诗,您可能想要使用 。一定要用\obeylines组括起来,除非您希望此“诗歌模式”持续到文档末尾。

TeXBook 第 94 页

正确的

版本 1

\documentclass{article}

\begin{document}
\obeylines % :)

Word
Word

\end{document}

版本 2

\documentclass{article}

\begin{document}

% Alternative :)
% https://latex.org/forum/viewtopic.php?t=12340
\begin{obeylines}
Word
Word
\end{obeylines}

\end{document}

在此处输入图片描述

不正确

\documentclass{article}

\obeylines % :(
\begin{document}

Word
Word

\end{document}
<to be read again> 
                   \scan_stop: 
l.29   {l3backend-pdftex.def}{2021-07-12}{}
                                           
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.

在此处输入图片描述

有关的

相关内容