簡體   English   中英

Latex \\ newcommand問題

[英]Latex \newcommand problem

誰能告訴我這里做錯了什么?

\newcommand{\bc}{\small\begin{verbatim}}
\newcommand{\ec}{\normalsize\end{verbatim}}

然后

\bc
1  3       6 7 89 10
 22 7  7  45
\ec

但我明白了

Runaway argument?
^^M1  3       6 7 89 10^^M 22 7  7  45^^M\ec^^M^^M\section{Reading on\ETC.
! File ended while scanning use of \@xverbatim.
<inserted text> 
                \par 
<*> i4c.tex

? 
! Emergency stop.
<inserted text> 
                \par 
<*> i4c.tex

我認為這樣做非常安全,因為大多數命令只是文本替換...任何提示?

如何\\begin{verbatim}有效。 簡要而粗略地說。

  1. \\begin{verbatim}擴展為\\verbatim
  2. 然后\\verbatim將每個特殊字符的類別代碼設置為12.現在所有字符都像數字或符號。
  3. 然后\\verbatim設置font,parindent並調用\\@xverbatim
  4. \\@xverbatim使用以下技巧捕獲逐字結尾:

     \\def\\@xverbatim#1\\end{#1\\end} 
  5. 然后\\ end {verbatim}完成工作。

newcommand{\\bc}{\\small\\begin{verbatim}}工作原理。

  1. \\bс擴展為\\small\\begin{verbatim}
  2. 然后\\begin{verbatim}擴展為\\varbatim \\varbatim更改所有類別和字體。
  3. 然后\\verbatim調用\\@xverbatim
  4. \\@xverbatim嘗試使用以下技巧捕捉你的論點:

     \\def\\@xverbatim#1\\end{#1\\end} 

    但這是不可能的,因為\\@xverbatim試圖捕捉\\end所有字母( \\end )都有類別12和11.但實際上只有\\ec exsits。

  5. \\@xverbatim正在嘗試並嘗試查找\\end ,其中反斜杠( \\ )有類別12但.... File ended while scanning use of \\@xverbatim

verbatim是特殊的,它掃描文字 \\end{verbatim} ,因為在\\begin{verbatim}之后沒有執行任何宏替換。

某些環境(例如verbatim )需要在前面的文本中掃描以手動查找它們的結尾。 因此,與“普通”環境不同, verbatim需要在輸入文本中找到text \\end{verbatim}

在您的示例中,它沒有(因為輸入文本包含\\ec而不是。

作為一種變通方法,您可以改為使用定義Verbatim包的fancyvrb包,並允許定義自定義逐字環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM