我是一個懶惰的人,喜歡經常使用新指令。完成後我將用原始程式碼替換。
我想要\verb|..
此處文字 的縮寫.. |
但這裡出了問題 - 我不知道如何修復我的程式碼:
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\newcommand\bv{\verb|}
\newcommand\ev{|}
\begin{document}
1. Putting \color{green!40!black} \verb| hurz | \color{black} works
but:
2. Putting \bv hurz \ev fails.
\end{document}
由於我不是\TeX
巫師,而是初學者,因此非常感謝每一個提示!
我忘記了:在 Linux 上使用 PDFLateX。
問候!
答案1
逐字命令需要在不擴展命令的情況下找到結束字串,因此您無法將其隱藏在\ev
命令中。
您可以使用 fancyvrb 來定義簡短的逐字記錄,請參閱文件:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\usepackage{fancyvrb}
\DefineShortVerb{\|}
\begin{document}
Putting |\section{abc} hurz| work
\end{document}
答案2
\verb
必須知道在哪裡結束,但同時它必須禁用字元的所有特殊解釋,包括反斜線。
人們可能會認為用細繩 \ev
,但是這樣會非常麻煩。使用不在要逐字列印的材料中的單字進行定界要簡單得多。但這是以一種非常間接的方式起作用的。
當 LaTeX 找到\verb
它時,它會檢查下一個字元並更改其類別代碼意思是「團體結束」。因此,在找到它的另一個實例時,角色的組尾性質將自動停用逐字模式所需的所有特殊設定。定義\ev
to 有什麼問題|
?首先,這|
不能更改為「組結束」的意思,但這是最不重要的問題:\ev
將被檢查為由三個組成的字串普通的人物,因為\verb
有效!所以它不能被解釋為命令。
如果您的目標是對內聯逐字材料進行著色,則有更簡單的方法。我展示了兩個:一個具有單一顏色,使用\greenverb
與\verb
.第二種方法定義\colorverb
將顏色規格作為參數,然後逐字呼叫通用顏色指令。
\documentclass{article}
\usepackage{xcolor}
\usepackage{newverbs}
\newverbcommand{\greenverb}{\color{green!40!black}}{}
\begin{document}
Putting \greenverb|hurz| works
\end{document}
如果您需要多種顏色,您可以定義一個通用命令,然後對其進行專門化。請使用比(您的名字、隨機字串或其他任何內容)更詳細的前綴,my
以盡量減少衝突的可能性。
\documentclass{article}
\usepackage{xcolor}
\usepackage{newverbs}
\makeatletter % allow private control sequences
\newverbcommand{\my@colorverb}{\color{\my@verbatimcolor}}{}
\newcommand{\colorverb}[1]{\def\my@verbatimcolor{#1}\my@colorverb}
\makeatother
\newcommand{\greenverb}{\colorverb{green!40!black}}
\newcommand{\blueverb}{\colorverb{blue!80!black}}
\begin{document}
Putting \greenverb|hurz| works
Putting \blueverb|hurz| works
Putting \colorverb{red!80!black}|hurz| works
\end{document}
答案3
這不是真正的逐字稿,但已經非常接近了。例如,輸入需要支撐平衡。
語法是使用者請求的:\bv....\ev
。此外,逐字記錄材料可以包括換行符和段落符(空白行)。
它會產生不正確輸出的一個地方是\bv
輸入行以單獨的反斜線結尾\
。如果 catcode-1,2 字元已更改,則會出現另一個不正確的輸出...它們將繼續顯示為{
和}
,除非採取額外的步驟。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern,tokcycle}
\tokcycleenvironment\myverb
{\addcytoks[1]{\string##1}}
{\addcytoks{\{}\processtoks{##1}\addcytoks{\}}}
{\ifx\par##1\addcytoks{\\}\else\addcytoks[1]{\string##1}\fi}
{\addcytoks[1]{\string##1}}
\makeatletter
\def\bv{\begingroup\obeylines\catcode`\%=12%
\long\def\tokencycle##1##2##3##4{\begingroup\let\endtokencycle
\endtokcycraw\aftertokcycle{\the\cytoks\expandafter\endgroup
\expandafter\endgroup\expandafter\tcenvscope
\expandafter{\the\cytoks}}\tokcycraw{##1}{##2}{##3}{##4}}%
\myverb}
\makeatother
\let\ev\endtokcycraw
\begin{document}
\textit{here we} go:
\bv ABc. D &^$% \xyz
\ {ef}g~\\
H#I^_ \ev back t\v{o} normal \today
a
b%
c
\end{document}