
我正在嘗試排版一些與 ConTeXt 內聯的 TeX 程式碼。在 LaTeX 中,有\verb
處理這個問題的方法,但我在 ConTeXt 中沒有找到等效的東西。
維基百科裡有一些建議代碼:
\def\typeTEX
{\bgroup
\def\processinlineverbatim##1%
{\processingverbatimtrue
\localcatcodestrue
\def\endofverbatimcommand{\TEXendofcommand##1}%
\bgroup
\aftergroup\endofverbatimcommand
\futurelet\next\doprocessinlineverbatim}%
\initializetyping{TEX}%
\startverbatimcolor
\processinlineverbatim\egroup }
但是,當我嘗試使用它時,我收到此錯誤:
tex error > tex error on line 34 in file /.../xyz.tex: ! Undefined control sequence
\typeTEX ...cessinlineverbatim }\initializetyping
{TEX}\startverbatimcolor \...
我不知道有什麼\initializetyping
作用以及是否需要。如果我刪除它,我會收到相同的訊息\startverbatimcolor
等等。這個宏好像不太好用。還有其他選擇嗎?
答案1
對於內聯輸入代碼,您可以使用\type
,這是描述的這裡在維基上。它可以用作:
\type[optional arg]{content with balanced braces}
\type[optional arg]<<content not containing the string ">>" anywhere>>
\type[optional arg]|content not containing the string "|" anywhere|
(在這裡的第三種情況下,您可以使用幾乎任何單個字元作為分隔符,而不僅僅是|
,與 LaTeX 允許的方式相同\verb
。)可選參數[...]
,如果給出,應該是鍵值對的列表:有效選項正是那些\setuptype
理解(這裡在維基百科上)。根據我機器上的安裝情況,
ConTeXt ver: 2017.06.30 19:45 MKIV beta fmt: 2017.7.5
您可以傳遞給的選項\type
是:
color = COLOR
command = CSNAME
compact = absolute last (all)
escape = yes (no) TEXT PROCESSOR->TEXT
left = COMMAND
lines = yes (no) normal hyphenated
option = mp lua xml parsed-xml nested tex context none NAME
right = COMMAND
space = on (off) normal fixed stretch
tab = (yes) no NUMBER
我模仿維基的風格,並使用括號(...)
來指示預設值。
\type
如果您發現自己一次又一次地傳遞相同的選項,那麼您可能會發現\definetype
,那麼您可能會發現有用,即這裡在維基上。它的運作方式與\define...
ConTeXt 中的所有樣式指令相同。
要模仿 Taco 的\typeTEX
巨集(僅適用於 MKII),您可以定義一個新的type
,如下所示
\definetype
[typeTEX]
[option=tex]
\starttext
\typeTEX!\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}!
\stoptext
這會將 TeX 語法突出顯示應用於\typeTEX
.