Funktionsargument global im Renewcommand ändern

Funktionsargument global im Renewcommand ändern

Ich möchte ein Argument einer Funktion dauerhaft auf einen bestimmten Wert setzen. In meinem Fall ist es die Funktion, \TextFielddie das Argument hat bordercolor. Ich möchte es global auf "nichts" setzen, anstatt es \TextField[bordercolor=,name=xyz]jedes Mal neu zu schreiben. Dies war mein Versuch, der zu einem Fehler führte: \renewcommand{\TextField}{\TextField[bordercolor=]}

Antwort1

\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}

Bildbeschreibung hier eingeben

Antwort2

hyperref hat einen Befehl, an den Sie Standardschlüssel für das Textfeld anhängen können (standardmäßig enthält es nur „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}

Die Alternative besteht darin, den Schlüssel einfach mit folgendem festzulegen \kvsetkeys(dies wirkt sich auch auf die Grenzen anderer Feldtypen aus):

\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}

verwandte Informationen