[Tex/LaTex] New command to create a new type of citation


I defined a new command to an specific type of citation:

\newcommand{\apud}[4]{\citeauthor{#1} \mkbibparens{\citeyear{#1},\space{#2} apud \cite{#3},\space{#4}}}

That produce this output:

Carnap (1935, p. 30 apud Hempel, 1983, p. 20)

I want one additional thing: that the name of the last author appear in upper case, to produce:

Carnap (1935, p. 30 apud HEMPEL, 1983, p. 20)

Or is there a more elegant way to do this?


Address = {London},
Author = {Carnap, Rudolf},
Publisher = {Kegan Paul, Trench, Trubner \& Co.},
Title = {Philosophy and Logical Syntax},
Year = {1935}}

Author = {Hempel, Carl Gustav},
Booktitle = {Physics, Philosophy and Psychoanalysis},
Editor = {Cohen, R.S. and Laudan, L.},
Pages = {73-100},
Publisher = {Springer Netherlands},
Series = {Boston Studies in the Philosophy of Science},
Title = {Valuation and Objectivity in Science},
Volume = {76},
Year = {1983},



\newcommand{\apud}[4]{\citeauthor{#1} \mkbibparens{\citeyear{#1},\space{#2} apud \cite{#3},\space{#4}}}


\apud{CARNAP1935}{p. 30}{HEMPEL1983}{p. 20}



Best Answer

Instead of converting to uppercase you could use smallcaps:

\newcommand{\apud}[4]{\citeauthor{#1} \mkbibparens{\citeyear{#1},\space{#2} apud \textsc{\cite{#3}},\space{#4}}}

enter image description here

As kerning of uppercase letters is a somewhat special thing, smallcaps may be the more elegant solution.

Related Question