我创建了一个宏来标记句子片段。它旨在用标签替换一段文本。不幸的是,只要文本片段包含非字母数字字符,它就会编译失败;
\documentclass{article}
\usepackage{tikz}
\newcommand{\LabelText}[3]{%
\begin{tikzpicture}[baseline=(LabelText.base)]
\node [
text width=width("#1"),
text centered,
draw=none,
thick,
rectangle,
inner sep=0pt,
outer sep=0pt,
fill={#3},
] (LabelText) {#2};
\end{tikzpicture}%
}
\newcommand{\padv}[1]{\LabelText{#1}{\strut Adv}{blue!30}}%
\begin{document}
This is an \padv{adverb,}
\end{document}
如果从 \padv{} 中删除逗号,该宏将起作用。我希望它能够处理非字母数字字符。非常感谢您的帮助。
注意,它应该看起来像这样...
答案1
我找到了两种解决方法。
一种方法是修改宏以接受如下\LabelText
用法#1
\newcommand{\LabelText}[3]{%
\begin{tikzpicture}[baseline=(LabelText.base)]
\node [
text width=width("{#1}"),
text centered,
draw=none,
thick,
rectangle,
inner sep=0pt,
outer sep=0pt,
fill={#3},
] (LabelText) {#2};
\end{tikzpicture}%
}
#1
另一种是在定义中双重拥抱\padv
:
\newcommand{\padv}[1]{\LabelText{{#1}}{\strut Adv}{blue!30}}%
无论哪种方式都会将参数的内容保留#1
在其自己的组中。