在 renewcommand 中全局更改函数参数

在 renewcommand 中全局更改函数参数

我想将函数的一个参数永久设置为特定值。在我的例子中,它是\TextField具有参数的函数bordercolor。我想将其全局设置为“无”,而不是\TextField[bordercolor=,name=xyz]每次都写入。这是我的尝试,但导致错误: \renewcommand{\TextField}{\TextField[bordercolor=]}

答案1

\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\let\TEXTFIELD\TextField
\renewcommand\TextField[1][]{\TEXTFIELD[bordercolor=,#1]}

\begin{document}
\begin{Form}
\TextField[name=xy]{foo}
\TextField[bordercolor=red,name=xy]{bar}
\end{Form}
\end{document}

在此处输入图片描述

答案2

hyperref 有一个命令,您可以在其中附加文本字段的默认键(默认情况下它只包含“print”):

\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{etoolbox}
\apptocmd\DefaultOptionsofText{,bordercolor=}{}{\fail}

\begin{document}
\begin{Form}
\TextField[name=xy]{foo}
\TextField[bordercolor=red,name=xy]{bar}
\end{Form}
\end{document}

另一种方法是简单地设置键\kvsetkeys(这也会影响其他字段类型的边框):

\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}


\begin{document}
\begin{Form}
\kvsetkeys{Field}{bordercolor=}

\TextField[name=x]{foo}
\TextField[bordercolor=red,name=y]{bar}


\end{Form}
\end{document}

相关内容