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}

관련 정보