在类中使用变量作为包设置

在类中使用变量作为包设置

我定义了一个新类。在这个类中,我调用 hyperref 包,并设置以下选项:

\RequirePackage{hyperref}
\hypersetup 
{
  pdfauthor={...},
  pdfsubject={...},
  pdftitle={...},
}

现在,我已经在此类中定义了某些变量(我可以用 调用它们\variablename{})。但是,如果我在此包中使用这些变量作为选项设置的一部分,则此操作会失败(未定义的控制序列)。我使用的语法是否不正确?

\RequirePackage{hyperref}
\hypersetup 
{
  pdfauthor={\variablename{}},
  pdfsubject={\variablename{}},
  pdftitle={\variablename{}},
}

我读过这些问题(变量名 \newcommand 带有另一个 \newcommand 中的参数在另一个新命令中定义一个带有变量名的新命令),但它们是关于新命令的......这是我包含的一个常规包(超引用),所以我希望它不需要这么复杂)...

答案1

以下组合正确地将设置pdfauthor为“Andrew”:

test.sty

\newcommand{\myname}{Andrew}

\RequirePackage{hyperref}

\hypersetup{pdfauthor={\myname}}

main.tex

\documentclass{article}

\usepackage{test}

\begin{document}
Text.
\end{document}

重要的是不要\hypersetup在变量\myname设置之前调用命令。但是,可以将其放入\AtBeginDocument命令中以将处理延迟到该点。

相关内容