ConTeXt 中的內嵌逐字文本

ConTeXt 中的內嵌逐字文本

我正在嘗試排版一些與 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.

相關內容