我想知道有些命令是如何作为#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,}%
}
在上面的代码中。