Altere o argumento da função globalmente no comando de renovação

Altere o argumento da função globalmente no comando de renovação

Quero definir permanentemente um argumento de uma função para um valor específico. No meu caso é a função \TextFieldque tem o argumento bordercolor. Quero defini-lo globalmente como "nada" em vez de escrever \TextField[bordercolor=,name=xyz]sempre. Esta foi minha tentativa que leva a um erro: \renewcommand{\TextField}{\TextField[bordercolor=]}

Responder1

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

insira a descrição da imagem aqui

Responder2

hyperref possui um comando ao qual você pode anexar chaves padrão para o campo de texto (por padrão ele contém apenas "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}

A alternativa é simplesmente definir a chave com \kvsetkeys(isso também afetará a borda de outros tipos de campo):

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

informação relacionada