命令如何将 #1 作为参数?

命令如何将 #1 作为参数?

我想知道有些命令是如何作为#1参数的用过的,而不是在声明时。

例如,biblatex\DeclareFieldFormat可以用过的像这样:

\DeclareFieldFormat {postnote} {#1}

我查看了biblatex1.sty(第 3480-3506 行,v2.3,修订版 28161),但无法弄清楚它是如何做到这一点的。诀窍在哪里?

这就是我想要实现的目标:

\foo {bar} {\textbf{#1}}

我想要排版酒吧以粗体显示;也就是说,按照第二个参数中给出的格式排版第一个参数中给出的内容。

biblatex1.sty

%---CUT---
\newrobustcmd*{\DeclareFieldFormat}{%
  \@ifstar
    {\blx@defformat\blx@defplainformat{ffd}*}
    {\blx@defformat\blx@defplainformat{ffd}{}}}
%---CUT---

% {<macro>}{<class>}{<*>}

\def\blx@defformat#1#2#3{%
  \@ifnextchar[%]
    {\blx@defformat@i{#1}{#2}{#3}}
    {\blx@defformat@i{#1}{#2}{#3}[*]}}

% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}

\def\blx@defformat@i#1#2#3[#4]#5{%
  \notblank{#3}
    {\blx@resetformat{#2}{#5}}
    {}%
  \def\blx@defformat@a{#2}%
  \def\blx@defformat@b{#4}%
  \blx@xsanitizeafter{\def\blx@defformat@c}{#5}%
  \afterassignment\blx@defformat@ii
  #1}
%---CUT---

答案1

您需要一个辅助函数,它用一个参数定义:

\documentclass{article}
\newcommand{\foo}[2]{%
  \def\fooaux##1{#2}%
  \fooaux{#1}%
}
\newcommand{\fooaux}[1]{}
\begin{document}
\foo{bar}{\textbf{#1,}} hhhh
\end{document}

这里的想法是,\fooaux最终将定义为等同于

\renewcommand{\fooaux}[1]{%
  \textbf{#1,}%
}

在上面的代码中。

相关内容