I think the only way is the redefinition of the cite command. In the example below I defined a new macro named uppercite
which formats the name via the redefinition of \mkbibnamelast
:
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{uppercite}}
{\multicitedelim}
{\usebibmacro{postnote}}
\newbibmacro*{uppercite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\def\mkbibnamelast##1{\MakeUppercase{##1}}\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
The complete MWE is:
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{CARNAP1935,
Address = {London},
Author = {Carnap, Rudolf},
Publisher = {Kegan Paul, Trench, Trubner \& Co.},
Title = {Philosophy and Logical Syntax},
Year = {1935}}
@book{CARNAP1937,
Address = {London},
Author = {Carnap, Rudolf},
Note = {Transl. Amethe Smeaton (Countess von Zeppelin)},
Publisher = {Kegan Paul},
Title = {The Logical Syntax of Language},
Year = 1937}
@book{SCHICKORE2006,
Address = {Dordrecht},
Author = {SCHICKORE, J. and STEINLE, F.},
Date-Added = {2012-07-19 08:53:43 +0000},
Date-Modified = {2013-03-09 19:03:37 +0000},
Publisher = {Kluwer Academic Pub},
Title = {Revisiting discovery and justification: historical and philosophical perspectives on the context distinction},
Volume = {14},
Year = {2006}}
\end{filecontents*}
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[citestyle=authoryear,bibstyle=authortitle,labelnumber,natbib=true,firstinits=true,isbn=false,babel=other,language=brazilian,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{uppercite}}
{\multicitedelim}
{\usebibmacro{postnote}}
\newbibmacro*{uppercite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\def\mkbibnamelast##1{\MakeUppercase{##1}}\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
\begin{document}
\verb+\textcite{CARNAP1937}+\quad\textcite{CARNAP1937}
\verb+\parencite{CARNAP1935}+\quad\parencite{CARNAP1935}
\verb+\parencite{SCHICKORE2006}+\quad\parencite{SCHICKORE2006}
\verb+\parencite{CARNAP1935}\parencite{SCHICKORE2006}+\parencite{CARNAP1935}\parencite{SCHICKORE2006}
\verb+\parencite{CARNAP1935,SCHICKORE2006}+\parencite{CARNAP1935,SCHICKORE2006}
\printbibliography
\end{document}
Change of the final name delimiter between \parencite
and \textcite
from "&" to "and" as in
(Sigfridsson & Ryde, 1998) and Sigfridsson and Ryde (1998)
is a feature of APA style. See for example https://blog.apastyle.org/apastyle/2011/01/writing-in-text-citations-in-apa-style.html and https://blog.apastyle.org/apastyle/2011/02/changes-parentheses-bring.html.
If you are looking for a complete implementation of APA style with biblatex
, you may be interested in biblatex-apa
, which when loaded as
\usepackage[backend=biber, style=apa]{biblatex}
should produce a bibliography and citations according to APA guidelines.
The answer below shows how to change the final name delimiter in the standard styles.
With the new context sensitive delimiter interface that should be as easy as redefining finalnamdelim
in global scope to give an ampersand and to give "and" for textcite
.
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
\DeclareDelimFormat[textcite]{finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\bibstring{and}\space}
\begin{document}
\cite{sigfridsson,companion}
\parencite{sigfridsson,companion}
\textcite{sigfridsson,companion}
\printbibliography
\end{document}
Edited to use the context sensitive delimiter interface. See the edit history for older versions of biblatex
.
Best Answer
Starting with version 3.4 of
biblatex
there is the concept ofdelimcontext
s that are used to find out in what context (\parencite
,\textcite
, bibliography, text is printed), we can use that to determine of we are in a\textcite
There is no need for patching the commands and a new toggle here.
We can then modify the
andothers
bibstring depending on that testMWE