renewcommand で関数の引数をグローバルに変更する

renewcommand で関数の引数をグローバルに変更する

関数の 1 つの引数を特定の値に永続的に設定したいです。私の場合、\TextField引数を持つのは関数ですbordercolor。毎回書き込むのではなく、グローバルに「nothing」に設定したいです\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}

関連情報