[Tex/LaTex] How to cite secondary source (\textcite{primarysource}\parencite[cited in][]{secondarysource})

biblatexcitingcross-referencing

I want to cite secondary source, is the a way to do in latex?

Primary Source: Ennis, 1996
Secondary Source: Robinson, 2011

I want the format as:

Ennis (1996, cited in Robinson, 2011)  -> Direct citation
(Ennis, 1996, cited in Robinson, 2011)  -> Indirect Citation

en

I tried:

\textcite{primarysource}\parencite[cited in][]{secondarysource}

Output:
enter image description here

My Full MWE:

\documentclass{article}
\usepackage{xpatch}

\usepackage{enumitem} % macros to modify appearance of 'itemize' environments
% \usepackage[style = authoryear-comp, maxnames = 99]{biblatex}

% \usepackage[backend=biber, 
% % style=authoryear, 
%  style=authoryear-comp,
% % citestyle=authoryear, 
% dashed=false,
% maxcitenames=2,
% maxbibnames=99,
% giveninits,
% alldates=comp,
% dateabbrev=false,
% uniquename=init]{biblatex}

\usepackage[backend=biber, 
% style=authoryear, 
 style=authoryear-comp,
% citestyle=authoryear, 
dashed=false,
maxcitenames=2,
maxbibnames=99,
giveninits,
alldates=comp, %for online citing
dateabbrev=false, %for online citing for data format month in full
uniquename=init]{biblatex}


\urlstyle{same}

% to make volume (number), eg. 4(2)
\newcommand*{\volnumdelim}{}
\DeclareFieldFormat[article,periodical]{number}{\mkbibparens{#1}}

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit*{\volnumdelim}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}

\newcommand*{\jourvoldelim}{\addcomma\space}
\newcommand*{\jourserdelim}{\newunitpunct}
\newcommand*{\servoldelim}{\jourvoldelim}
\newcommand*{\volnumdatedelim}{\addspace}

\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\jourvoldelim}%
  \iffieldundef{series}
    {}
    {\setunit*{\jourserdelim}%
     \printfield{series}%
     \setunit{\servoldelim}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\volnumdatedelim}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}  
% to make volume (number), eg. 4(2)
\DeclareNameAlias{sortname}{family-given} %for second and third author name
\DeclareFieldFormat{postnote}{\printtext[bibhyperref]{#1}}

\RequirePackage{xcolor}

\definecolor{darkblue}{rgb}{0, 0, 0.5}
\usepackage[colorlinks=true, allcolors=darkblue]{hyperref}   

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[english]{babel}
\usepackage[style=british]{csquotes}
% % --------------------------------------------------------------------
% \usepackage[raise]{fmtcount}

% \DefineBibliographyExtras{english}{%
%   \renewcommand*{\mkbibordedition}[1]{\ordinalnum{#1}[f]}
% }

% \DefineBibliographyStrings{english}{%
%     edition = {edn\adddot},%
% }
% % --------------------------------------------------------------------

\addto\captionsenglish{
\renewcommand{\listfigurename}{\textsf{List of Figures}}
\renewcommand{\listtablename}{\textsf{List of Tables}}
}

% Flag for whether to add front matter to TOC
\newtoggle{fulltoc}
\toggletrue{fulltoc}  % Change to \togglefalse{fulltoc} to remove front matter
\renewcommand{\contentsname}{Table of Contents}


% \usepackage[unicode,colorlinks,citecolor=blue]{hyperref}


% for a chapter edited by a book
\usepackage{xpatch}
% \renewcommand*{\finalnamedelim}{\addspace\&\space} 
% \renewcommand*{\intitlepunct}{\space} (to become In:)
\renewcommand{\labelnamepunct}{\space} %to delete . after (1997)
% \DeclareFieldFormat[article, incollection, unpublished]{pages}{#1} % to add in PP. (page)
\DeclareFieldFormat[article, incollection, unpublished]{title}{#1}
% \renewcommand{\bibpagespunct}{\ifentrytype{article}{\addcolon}{\addperiod\addspace}} %cancel out this in order to add in PP. (page)


% for title italic
% \DeclareFieldFormat*{title}{\mkbibemph{#1}} %for title italic in all format (conference, paper..)
\DeclareFieldFormat*{title}{#1} %for conference title delete ".."
\DeclareFieldFormat[incollection]{title}{\mkbibemph{#1}} %for incollecion title italic ONLY
\DeclareFieldFormat[thesis]{title}{\mkbibemph{#1}} %for phdthesis title italic ONLY
% for title italic

% to delete "In:" for article
\renewbibmacro{in:}{%
  \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
% to delete "In:" for article


% for delete comma after Author A and Aurhor b
\DefineBibliographyExtras{english}{%
   \let\finalandcomma\empty
   \let\finalandsemicolon\empty
 }
\renewcommand{\compcitedelim}{\space\&\space}
\DeclareNameAlias{editorin}{given-family}

\newbibmacro*{byeditor:in}{%
  \ifnameundef{editor}
    {}
    {\printnames[editorin]{editor}%
     \setunit{\addcomma\space}%
     \usebibmacro{editorstrg}%
     \clearname{editor}}}     


\DeclareDelimFormat[textcite]{postnotedelim}{\addcolon\space}
\DeclareDelimFormat[parencite]{postnotedelim}{\addcolon\space}

% \DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{postnote}{\printtext[bibhyperref]{#1}}
\DeclareFieldFormat{multipostnote}{#1}


% for references 's studies (year)
\renewcommand*{\nameyeardelim}{\addcomma\space}
\newcommand{\mycite}[1]{\citeauthor{#1}'s \citeyear{#1}}

\DeclareCiteCommand{\citeauthor}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \printtext[bibhyperref]{\printnames{labelname}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\citeyear} % <======================================
    {}
    {(\bibhyperref{\printdate})}
    {\multicitedelim}
    {}

\DeclareCiteCommand{\parencite}[\mkbibparens]
  {\renewcommand*{\postnotedelim}{\addcolon\space}%
   \usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{\usebibmacro{cite}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\cbx@textcite}
  {\renewcommand*{\postnotedelim}{\addsemicolon\space}%
   \usebibmacro{cite:init}}
  {\usebibmacro{citeindex}%
   \usebibmacro{textcite}}
  {}
  {\usebibmacro{textcite:postnote}}  



\makeatletter
\let\abx@macro@textciteOrig\abx@macro@textcite
\renewbibmacro{textcite}{% <============================================
   \bibhyperref{%
   \let\bibhyperref\relax\relax%
   \abx@macro@textciteOrig%
   }%
}%
\makeatother
% for references 's studies (year)


% \DeclareFieldFormat[book]{title}{\mkbibemph{#1}}
%  \usepackage[raise]{fmtcount}
%  \DefineBibliographyExtras{english}{%
%   \renewcommand*{\mkbibordedition}[1]{\ordinalnum{#1}[f]}
%  }

%  \DefineBibliographyStrings{english}{%
%      edition = {edn\adddot},%
% }

% --------------------------------------------------------------------
\DeclareFieldFormat[book]{title}{\mkbibemph{#1}}
\usepackage[raise]{fmtcount}

\DefineBibliographyExtras{english}{%
   \renewcommand*{\mkbibordedition}[1]{\ordinalnum{#1}[f]}
 }

 \DefineBibliographyStrings{english}{%
     edition = {edn\adddot},%
 }
% --------------------------------------------------------------------

\usepackage[normalem]{ulem}
\useunder{\uline}{\ulined}{}%
\DeclareUrlCommand{\bulurl}{\def\UrlFont{\ttfamily\color{blue}\ulined}}

\makeatletter
\DeclareUrlCommand\ULurl@@{%
  \def\UrlLeft{\uline\bgroup}%
  \def\UrlRight{\egroup}}
\def\ULurl@#1{\hyper@linkurl{\ULurl@@{#1}}{#1}}
\DeclareRobustCommand*\ULurl{\hyper@normalise\ULurl@}
\makeatother

\DeclareFieldFormat{doi}{%
    \newline
    \mkbibacro{doi}\addcolon\space
    \ifhyperref
        {\href{http://dx.doi.org/#1}{\ULurl{#1}}}
        {\ULurl{#1}}}


\DeclareFieldFormat{url}{Available at\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}
\DeclareFieldFormat[online]{title}{\mkbibemph{#1}}
\DefineBibliographyStrings{english}{%
  urlseen = {Accessed},
}

\DefineBibliographyExtras{english}{%
  \protected\def\mkdaterangecomp{%
    \mkdaterangetrunc{long}}%
  \protected\def\mkdaterangeterse{%
    \mkdaterangetrunc{short}}%
  \protected\def\mkdaterangecompextra{%
    \mkdaterangetruncextra{long}}%
  \protected\def\mkdaterangeterseextra{%
    \mkdaterangetruncextra{short}}%
  \protected\def\mkbibdatelong#1#2#3{%
    \iffieldundef{#3}
      {}
      {\thefield{#3}%
       \iffieldundef{#2}{}{\nobreakspace}}%
    \iffieldundef{#2}
      {}
      {\mkbibmonth{\thefield{#2}}%
       \iffieldundef{#1}{}{\space}}%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
}


% \DeclareFieldFormat{doi}{\bibstring{urlfrom}\addcolon\space\url{#1}}
% \DefineBibliographyStrings{english}{%
%     urlfrom = {Available at}
% }


\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}

@article{primarysource,
   title={primary source},
   author={Ennis, Peter},
   journal={Proceedings of the Human Factors and Ergonomics society Annual Meeting},
   volume={52},
   number={21},
   pages={1747--1750},
   year={1996},
   organization={Sage Publications Sage CA: Los Angeles, CA},
   url= "https://doi.org/10.1177/154193120805202112",
 }


@article{secondarysource,
  title={Teaching logic and teaching critical thinking: revisiting McPeck},
  author={Robinson, Susan Rebecca},
  journal={Higher Education Research and Development},
  volume={30},
  number={3},
  pages={275--287},
  year={2011},
  publisher={Taylor \& Francis}
}


%---------------------------------------------------------------


\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{WinNT}



\textcite{primarysource}\parencite[cited in][]{secondarysource}


\printbibliography
\end{document}

Best Answer

You can define macros that take two citation keys as arguments and print the citations as you need them. Minimal example (without most part of your code which isn't at all relevant for the question):

\documentclass{article}
\usepackage[backend=biber,
style=authoryear-comp]{biblatex}

\DeclareCiteCommand{\secondaryciteauthor}{}{\printtext[bibhyperref]{\printnames{labelname}}}{}{}
\DeclareCiteCommand{\secondaryciteyear}{}{\bibhyperref{\printdate}}{\multicitedelim}{}
\newcommand{\secondarycitedirect}[2]{\secondaryciteauthor{#1} (\secondaryciteyear{#1}, cited in \secondaryciteauthor{#2}, \secondaryciteyear{#2})}
\newcommand{\secondaryciteindirect}[2]{(\secondaryciteauthor{#1}, \secondaryciteyear{#1}, cited in \secondaryciteauthor{#2}, \secondaryciteyear{#2})}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{primarysource,
   title={primary source},
   author={Ennis, Peter},
   journal={Proceedings of the Human Factors and Ergonomics society Annual Meeting},
   volume={52},
   number={21},
   pages={1747--1750},
   year={1996},
   organization={Sage Publications Sage CA: Los Angeles, CA},
   url= "https://doi.org/10.1177/154193120805202112",
 }


@article{secondarysource,
  title={Teaching logic and teaching critical thinking: revisiting McPeck},
  author={Robinson, Susan Rebecca},
  journal={Higher Education Research and Development},
  volume={30},
  number={3},
  pages={275--287},
  year={2011},
  publisher={Taylor \& Francis}
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}

\secondarycitedirect{primarysource}{secondarysource}

\secondaryciteindirect{primarysource}{secondarysource}

\printbibliography
\end{document}

enter image description here

Edit: I added custom \secondaryciteauthor and \secondaryciteyear macros to be independent of changes you made for other citing macros. You might need to adjust those to more closely match what you use in other citing cases.