특정 인용 명령에 대한 작성자 글꼴 변경

특정 인용 명령에 대한 작성자 글꼴 변경

다음 MWE를 고려하십시오.

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\AtBeginDocument{%
  \renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
}

\begin{document}
\textcite{knuth:ct:e}\\
\fullcite{salam}\\
Footcite\footfullcite{baez/article}
\printbibliography
\end{document}

그러면 문서와 참고문헌 모두에서 모든 인용 명령에 대해 저자 성이 작은 대문자로 인쇄됩니다. 명령 에 대해서만 \textcite성(예: 예에서는 Knuth)이 작은 대문자가 아닌 일반 글꼴로 텍스트로 인쇄되기를 원합니다.

\mkbibnamefamily편집: 2016년 3월(biblatex 3.3) 부터 대신 변경해야 합니다.\mkbibnamelast

답변1

가능한 해결책은 텍스트 인용에 있는지 여부를 결정하는 토글을 도입하는 것입니다. 그런 다음 수정 사항이 \mkbibnamelast토글에 매개변수화됩니다. 이 솔루션은 xpatch패키지를 사용하여 bibmacro를 수정하고 매크로 textcite실행 직전에 토글을 true로 설정 하고 매크로 실행 textcite직후에 false로 설정합니다 .textcite

\newtoggle{textcite}

\AtBeginDocument{
  \renewcommand*{\mkbibnamelast}[1]{%
    \iftoggle{textcite}{#1}{\textsc{#1}}}
}

\xpretobibmacro{textcite}{\toggletrue{textcite}}{}{}
\xapptobibmacro{textcite}{\togglefalse{textcite}}{}{}

여기에 이미지 설명을 입력하세요

답변2

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\AtBeginDocument{%
  \renewcommand*\mkbibnamelast[1]{\textsc{#1}}}
\let\TC\textcite
\renewcommand\textcite[1]{{\def\mkbibnamelast##1{##1}\TC{#1}}}% hold it local
%% If you need the optional argument of \textcite then we have to modify
%% the macro    

\begin{document}
\textcite{knuth:ct:e}\\
\fullcite{salam}\\
Footcite\footfullcite{baez/article}
\printbibliography
\end{document}

여기에 이미지 설명을 입력하세요

답변3

최신 버전에서는 다음 biblatex과 유사한 접근 방식을 사용할 수 있습니다.귀도'에스답변, 그러나 플래그를 설정하기 위해 인용 명령을 패치하는 대신 구분 기호 컨텍스트를 테스트합니다.

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

\makeatletter
\renewcommand*{\mkbibnamefamily}{%
  \ifcsundef{mkbibnamefamily@\blx@delimcontext}
    {\textsc}
    {\csuse{mkbibnamefamily@\blx@delimcontext}}}

\newcommand*{\mkbibnamefamily@textcite}[1]{#1}
\makeatother


\begin{document}
\textcite{knuth:ct:e}

\fullcite{salam}

Footcite\footfullcite{sigfridsson}

\printbibliography
\end{document}

"Knuth (1986)" 작은 대문자 없음//"Abdus Salam (1968)." 작은 대문자로 된 "Salam"

관련 정보