- 主题:tex怎么区分相同格式的多个可选参数?
比如\parbox[位置][高度][内容位置]{宽度}{盒子内容},有三个可选参数,其中[位置]与[内容位置]的格式是一样的,如果我写下\parbox[b]{3cm}{text},tex是怎么识别[b]是赋值给[位置]还是[内容位置]的呢?如果是按照从左到右的顺序来赋值,那么应该是赋值给[位置]了.那么问题来了,如果我只想给[内容位置]赋值同时另两个可选参数使用缺省值,应该怎么弄?
与此类似的问题也发生在使用xparse宏包的\NewDocumentCommand的时候,比如定义一个名为\mytestcom的命令:
\NewDocumentCommand{\mytestcom}{m O{a} O{b} m}{#1#2#3#4}
其中两个可选参数的格式是一样的,都是字母.如果我想得到字符串"xacz",用\mytestcom{x}[c]{z}是不行的,我能想到的办法是用D格式通过不同的定界符来区分可选参数,这样确实也行得通.想问一下这个解决思路是对的吗?算得上是好的解决方案吗?我不满意的地方在于这个方案需要记住每个参数对应的定界符,并不是那么的"智能化".
--
修改:Torri FROM 1.203.117.*
FROM 1.203.117.*
这种可选参数是用于比较简单的语法的。复杂的语法都是各种 key-value 实现,宏包支持里 keyval、xkeyval、pgfkeys、l3keys 都是常见的,不常见的也一堆。
【 在 Torri 的大作中提到: 】
: 比如\parbox[位置][高度][内容位置]{宽度}{盒子内容},有三个可选参数,其中[位置]与[内容位置]的格式是一样的,如果我写下\parbox[b]{3cm}{text},tex是怎么识别[b]是赋值给[位置]还是[内容位置]的呢?如果是按照从左到右的顺序来赋值,那么应该是赋值给[位置]了.那么问题来了,如果我只想给[内容位置]赋值同时另两个可选参数使用缺省值,应该怎么弄?
:
: 与此类似的问题也发生在使用xparse宏包的\NewDocumentCommand的时候,比如定义一个名为\mytestcom的命令:
: ...................
--
FROM 114.249.199.*
针对你这种情形,可以约定输入一个特定的参数值(有时可以用空值)表示采用默认值。
【 在 Torri 的大作中提到: 】
: 比如\parbox[位置][高度][内容位置]{宽度}{盒子内容},有三个可选参数,其中[位置]与[内容位置]的格式是一样的,如果我写下\parbox[b]{3cm}{text},tex是怎么识别[b]是赋值给[位置]还是[内容位置]的呢?如果是按照从左到右的顺序来赋值,那么应该是赋值给[位置]了.那么问题来了,如果我只想给[内容位置]赋值同时另两个可选参数使用缺省值,应该怎么弄?
:
: 与此类似的问题也发生在使用xparse宏包的\NewDocumentCommand的时候,比如定义一个名为\mytestcom的命令:
: ...................
--
FROM 114.249.199.*
3x
【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: 这种可选参数是用于比较简单的语法的。复杂的语法都是各种 key-value 实现,宏包支持里 keyval、xkeyval、pgfkeys、l3keys 都是常见的,不常见的也一堆。
--
FROM 106.39.61.*