Cambiar el argumento de la función globalmente en el comando de renovación

Cambiar el argumento de la función globalmente en el comando de renovación

Quiero establecer un argumento de una función de forma permanente en un valor específico. En mi caso es la función \TextFieldla que tiene el argumento bordercolor. Quiero configurarlo globalmente en "nada" en lugar de escribirlo \TextField[bordercolor=,name=xyz]cada vez. Este fue mi intento que genera un error: \renewcommand{\TextField}{\TextField[bordercolor=]}

Respuesta1

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

ingrese la descripción de la imagen aquí

Respuesta2

hyperref tiene un comando al que puedes agregar claves predeterminadas para el campo de texto (por defecto solo contiene "imprimir"):

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

La alternativa es simplemente configurar la clave con \kvsetkeys(esto también afectará el borde de otros tipos de campos):

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

información relacionada