我想创建一个命令(\newcommand
)来对文本进行一些修饰(基本上是在文本周围画一个框),用于技术报告:
例如:
Use \pdobj{frob}{noz zle} for achievers
渲染如下:
现在参数文本(在本例中frob
为 和noz zle
)非常常用波浪符号~
。由于波浪符号显然很特殊,我目前必须使用
And \pdobj{slurp$\sim$}{} they did.
实现:
现在,我真正想做的是简单地写
And \pdobj{slurp~}{} they did.
达到同样的效果。据我所知,这需要重新定义命令~
,例如
\def~{$\sim$}
虽然这似乎有效,但它也使得传统的~
不间断空格用法(在我的命令之外)变得不可能。
但是,该\url
命令以某种方式完成了渲染~
某些特殊字形(例如\url{~T}
)的操作,而不会影响其范围之外的 NBSP 使用。
我看过url.sty
,但坦率地说,这远远超出了我的 TeX-foo 的能力。
~
那么,当我在命令的参数内部遇到与在外部遇到完全不同的事情时,是否存在(简单/容易/直接的)方法来做这件事?
答案1
只需~
在组中重新定义
\newcommand{\pdobj}[2]{%
\begingroup\def~{$\sim$}%
<the other code for boxing the material
\endgroup
}
使用当前的定义\pdobj
,可以更好地优化代码。