当前位置:网站首页>【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法

【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法

2022-08-11 06:12:00 键盘即钢琴

一、背景

用xelatex排版引擎渲染下面的代码

\documentclass{article}

\usepackage{amsmath}

\begin{document}
Roman number\_XII\@. Yes.\\
\verb!Roman number_XII\@. Yes.!\\
\verb{Roman number_XII\@. Yes.}
\verb!Roman number_XII\@. Yes.!\\
\end{document}

出现了错误【\verb ended by end of line.】

 

二、解决方法

参考:\verb ended by end of line - Overleaf, Online LaTeX Editor

我们把出问题的那一行的最后一个}号改成和前面的{号一样的后,就可以成功渲染出结果。 

\documentclass{article}

\usepackage{amsmath}

\begin{document}
Roman number\_XII\@. Yes.\\
\verb!Roman number_XII\@. Yes.!\\
\verb{Roman number_XII\@. Yes.{
\verb!Roman number_XII\@. Yes.!\\
\end{document}

 

 

三、反思

在上文给出的参考链接中,我们可以学到很多!

3.1 对于\verb控制命令,不允许在代码中换行

例如下面的代码是错误的

We can write different typefaces in \LaTeX as
\verb{ 
\textbf{Bold}
\textit{italics}
\textsf{sans serif}
}

而\verbatim环境,就允许代码换行的存在!!!

% In your preamble

\usepackage{verbatim}

% In the main body of your document

We can write different typefaces in \LaTeX as
\begin{verbatim}
\textbf{Bold}
\textit{italics}
\textsf{sans serif}
\end{verbatim}

渲染结果,完全无误! 

 

 

3.2 \verb的分界符不是唯一的,但是前后要相同

\verb的分界符不是唯一的(一般是感叹号!),但是前后要相同;并且最好不要跟要\verb直线显示的文本中的符号相同。

如果使用了和内容的符号相同的分界符,则可能会误识别。

\verb{\frac{1}{2}}

比如上面的代码, 因为前面的分界符是{,而内容中也有此分界符,最后的输出结果就差强人意了!! 

 另外,分界符不可能是空格;如果直接在命令后跟空格,这个空格加与不加是等效的。

\verb \frac{1}{2}

上面的这一行,在编译时也会出现错误【\verb ended by end of line.】,因为第一个分界符是\,后面却没有再一次出现分界符。

修改成下面的样子后,编译生成了正确结果。

\verb \frac{1}{2}\

3.3 \verb命令一般不作为另一个命名的参数

当我们试图渲染下面这一行

\section{\verb!\frac{1}{2}!}

我们会收到非常多的错误!

  •  Missing $ inserted. <inserted text> 
  • Extra }, or forgotten $.  \frac  #1#2->{\begingroup #1\endgroup \@@over #2}
     
  • Missing } inserted. <inserted text> 
  • \verb illegal in command argument.
  • Argument of \@sect has an extra }. <inserted text> 
  • Paragraph ended before \@sect was complete. <to be read again> 
  • Argument of \@gobble has an extra }. <inserted text> 
  • ....(太多了写不过来)

因此,非常不建议把这个命令写在另一个命令的参数位置!

如果实在要写。

可以用命令\cprotect修饰一下!这个命令,需要添加宏包cprotect。下面给出示例代码

\documentclass{article}

\usepackage{verbatim}
\usepackage{amsmath}
\usepackage{cprotect}

\begin{document}
Roman number\_XII\@. Yes.\\
\verb!Roman number_XII\@. Yes.!\\
\verb{Roman number_XII\@. Yes.{
\verb!Roman number_XII\@. Yes.!\\

% In the main body of your document

We can write different typefaces in \LaTeX as
\begin{verbatim}
\textbf{Bold}
\textit{italics}
\textsf{sans serif}
\end{verbatim}

\verb \frac{1}{2}\
\cprotect\section{This is a section heading with a verbatim \verb!\frac{1}{2}!}
\end{document}

渲染结果如下

 

原网站

版权声明
本文为[键盘即钢琴]所创,转载请带上原文链接,感谢
https://blog.csdn.net/PSpiritV/article/details/126276825