Изменить аргумент функции глобально в 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}

Связанный контент