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

相關內容