我正在使用l3doc
它來記錄一些軟體包(我知道它不是正式穩定的,但我喜歡它...)。我遇到了一個問題,如果其中一個項目是以反斜線開頭的宏,{function}{<list>}
則為每個項目添加一個反斜線。<list>
\documentclass{l3doc}
\begin{document}
\begin{function}{{environment}}
Description
\end{function}
\begin{function}{\command}
Description
\end{function}
\begin{variable}{counter}
Description
\end{variable}
\begin{function}{{environmentII}, counterII, \commandII}
Description for multiple items
\end{function}
\begin{macro}{{environment}}
Definition
\end{macro}
\begin{macro}{\command}
Definition
\end{macro}
\begin{macro}{counter}
Definition
\end{macro}
\begin{macro}{{environmentII}, counterII, \commandII}
Description for multiple items
\end{macro}
\end{document}
這個範例表明,使用單一項目<list>
可以按預期工作,但是一旦我將巨集新增到清單中,所有項目都會被刪除。反斜線。{macro}
沒有表現出這種行為...
有辦法防止這種情況嗎?
答案1
在我看來,你只是濫用環境。預期參數是一個函數或函數列表。但是您傳遞的清單中的所有元素都不是 l3 意義上的函數。 (但是環境可能也適用於文件級命令 - 請參閱下文。在這種情況下,一些您傳遞的東西是函數,而不是其他函數。
請注意,即使您說它按預期工作,您也不會獲得格式一致的項目。例如,您會counter
使用襯線字體(而不是打字機)進行格式化,因為它對解析器來說看起來不像變數。 (\l_tobi_counter_int
大概可以在這裡工作,並且相當於 l3。)
定義了提供的各種環境的程式碼l3doc根據環境要記錄的事物類型的預期語法處理參數。
因此,例如,function
環境會在逗號分隔清單中的每個元素中查找:
,以便將名稱與其參數的規格分開。然後,該資訊會以標準方式自動處理和格式化。
例如,
\begin{function}{\Tobi_function_one:nn, \Tobi_function_one:Vn, \Tobi_function_one:VV}
Description for multiple items
\end{function}
將檢測到它正在處理同一函數的三個變體,即已以通常方式產生基本函數的變體的情況。然後,它將第一個格式化為基本變體,將其餘兩個格式化為變體,將它們組合起來並區分它們不同的參數說明符。
逗號分隔的清單適用於列出的項目是主題的微小變化的情況,例如具有不同參數規範的相同函數或某種變體形式。但環境、計數器和巨集不屬於這種類型,不應該以這種方式組合在一起。
我不完全確定macro
應該用來做什麼。我找不到太多文檔l3doc我無法從 l3 的文檔來源中弄清楚到底有什麼區別。
我的第一個想法是,這macro
可能適用於文件級命令,但是,儘管我上面說過,解析的文檔用於function
記錄文檔級命令。這讓我很困惑,因為我不認為這些指令是功能根本不。我認為這是區分文件級內容和較低級別 l3 內容的想法的一部分,並且“函數”僅適用於後者。但我在這一點上顯然是錯的。 (當然,macro
也不一定有多大意義,因為函數肯定是宏。)
這是我正在使用的範例程式碼。
\documentclass{l3doc}
\begin{document}
\begin{function}{\Tobi_function_prior:n}
Description
\end{function}
\begin{function}{\command:}
Description
\end{function}
\begin{variable}{\l_Tobi_variable_tl}
Description
\end{variable}
\begin{function}{\Tobi_function_one:nn, \Tobi_function_one:Vn, \Tobi_function_one:VV}
Description for multiple items
\end{function}
\begin{function}{\TobiDocumentCommand}
\begin{syntax}
\cs{TobiDocumentCommand}\marg{mandatory argument}
\end{syntax}
\end{function}
\end{document}