[英]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}
有效。 簡要而粗略地說。
\\begin{verbatim}
擴展為\\verbatim
。 \\verbatim
將每個特殊字符的類別代碼設置為12.現在所有字符都像數字或符號。 \\verbatim
設置font,parindent並調用\\@xverbatim
。 \\@xverbatim
使用以下技巧捕獲逐字結尾:
\\def\\@xverbatim#1\\end{#1\\end}
然后\\ end {verbatim}完成工作。
newcommand{\\bc}{\\small\\begin{verbatim}}
工作原理。
\\bс
擴展為\\small\\begin{verbatim}
。 \\begin{verbatim}
擴展為\\varbatim
。 \\varbatim
更改所有類別和字體。 \\verbatim
調用\\@xverbatim
。 \\@xverbatim
嘗試使用以下技巧捕捉你的論點:
\\def\\@xverbatim#1\\end{#1\\end}
但這是不可能的,因為\\@xverbatim
試圖捕捉\\end
所有字母( \\
, e
, n
, d
)都有類別12和11.但實際上只有\\ec
exsits。
\\@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.