# biblatex in-text citation with varying maxbibnames

I am using biblatex and biber. In my main text, I am happy to have the standard default \textcite display, which (depending on maxbibnames may give the names of many authors). This standard default is also what I would want to see in the references (\printbibliography).

However, I have one literature review table, in which I don't really want to see all authors displayed. This is partly because I want to fit the names into a tabular column, with more information on the right. Here and only here, I would really only want to have maxbibnames=1. easy?

Ideally, an even better version would allow me to invent my own \citemystyle. I would want to add a journal abbreviation, like Smith et.al. (AER, 2021). I would add a field into my *.bib file for the journal abbreviation; and then,

\newcommand{\citemystyle}[1]{\citeauthorlastname[1]{#1}\citeetalifnany{#1}~%
(\citejournalabbrev{#1}, \citeyear{#1}}


where the [1] tries to designate that citeauthorlastname should only grab the first author's last name.

I could then write \citemystyle{smith2021aer} and it would magically work to give me Smith et.al. (AER, 2021).

I may be asking too much of biblatex/biber, but I have been surprised by its flexibility in the past...heck, sometimes the answers are even easy. if hard, please don't spend much time on this. I can just duplicate the text by hand.

You can use the shortjournal field and define a new \mytextcite command through \DeclareCiteCommand. We limit maxnames to 1 with \setcounter{maxnames}{1} and we load a modified version of the textcite macro, called mytextcite. This macro executes \usebibmacro{shortjournal} which print the shortjournal field only if it is given, and adds a comma and a space.

\begin{filecontents*}[overwrite]{\jobname.bib}
@article{bertram,
author       = {Bertram, Aaron and Wentworth, Richard},
title        = {Gromov invariants for holomorphic maps on {Riemann} surfaces},
journaltitle = {J.~Amer. Math. Soc.},
shortjournal = {JAMS},
date         = 1996,
volume       = 9,
number       = 2,
pages        = {529-571}}
\end{filecontents*}
\documentclass{article}
\usepackage[style=authoryear]{biblatex}

\newbibmacro*{shortjournal}{%
\iffieldundef{shortjournal}{}

\newbibmacro*{mytextcite}{%
\ifnameundef{labelname}
{\iffieldundef{shorthand}
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
\printdelim{nonameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{shortjournal}%
{\usebibmacro{cite:shorthand}}}
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
\printdelim{nameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{shortjournal}%
\usebibmacro{citeyear}}}

\DeclareCiteCommand{\mytextcite}
{\boolfalse{cbx:parens}}
{\setcounter{maxnames}{1}%
\usebibmacro{citeindex}%
\iffirstcitekey
{\setcounter{textcitetotal}{1}}
{\stepcounter{textcitetotal}%
\textcitedelim}%
\usebibmacro{mytextcite}}
{\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}}
{\usebibmacro{textcite:postnote}}

\begin{document}
\textcite{bertram}
\mytextcite{bertram}
\printbibliography
\end{document}


Considering your need, the command could have been defined in a simpler way, but in that way it can be used more extensively (I belive).

\newcommand{\mytextcite}[1]{%
\citeauthor*{#1} (\citefield{#1}{shortjournal}, \citeyear{#1})}