biblatex - 带有条件子句的自定义引用

biblatex - 带有条件子句的自定义引用

我有一个自定义脚注引用命令,通过修改这个答案方式如下:

\DeclareCiteCommand{\citejournal}  % to get the journal entry                                                                                  
  {\usebibmacro{prenote}}                                                                                            
  {\usebibmacro{citeindex}%                                                                                          
    \usebibmacro{journal}}                                                                                           
  {\multicitedelim}                                                                                                  
  {\usebibmacro{postnote}}

\newcommand{\cfootcite}[1]{                                                                                          
  \tiny{\citeauthor{#1}, \citetitle{#1}, \citejournal{#1}, \citeyear{#1}}} % to get author, title, journal, year  

.bib这对于包含所有这些字段的条目来说非常有效。

但是现在我有一个.bib包含许多文章的文件,但也有一些书籍(因此没有日记条目),我想使用此命令引用它们。

我如何制作一个条件来检查文件journal中是否有条目.bib,并相应地更改输出?

我尝试过尝试这个问题,但显然我对 LaTeX 中的条件语句不太熟悉,无法让它发挥作用。

任何帮助都将受到赞赏。

(我知道最简单的解决方案是为文章和书籍定义两个单独的命令。)

短信提醒:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{bib.bib}
@article{article,
    author = {Vimes, Samuel},
    title = {The Influence of Species Diversity in the City Watch},
    journal = {Unseen University Non-Magical Journal},
    date = {1988}
}
@book{book,
    author = {Vimes, Samuel},
    title = {How To Be A Good Copper},
    date = {2002}
}
\end{filecontents}

\usepackage[backend=biber,maxcitenames=1,maxbibnames=2,                                                         
giveninits=true]{biblatex}                                                                                      
\bibliography{bib.bib}


% \usepackage{xstring} % for if clause

\DeclareCiteCommand{\citejournal}                                                                                   
  {\usebibmacro{prenote}}                                                                                           
  {\usebibmacro{citeindex}%                                                                                         
    \usebibmacro{journal}}                                                                                          
  {\multicitedelim}                                                                                                 
 {\usebibmacro{postnote}}                                                                                             
\newcommand{\cfootcite}[1]{                                                                                         
  {\tiny{\citeauthor{#1}, \citetitle{#1}, \citejournal{#1}, \citeyear{#1}}}} % to get author, title, journal, year

\begin{document}

Article:\\ \cfootcite{article}

Book:\\ \cfootcite{book}

\end{document}

MWI 输出

答案1

您可以使用biblatex命令

\ifentrytypes{article}{\usebibmacro{journal}\addcomma\addspace}{} 

在你辅助引用命令的定义中\citejournal,删除后面的逗号\citejournal{#1}

因此

\DeclareCiteCommand{\citejournal}                                                                                   
  {\usebibmacro{prenote}}                                                                                           
  {\usebibmacro{citeindex}%                                                                                         
    \ifentrytype{article}{\usebibmacro{journal}\addcomma\addspace}{}}                                                                                          
  {\multicitedelim}                                                                                                 
 {\usebibmacro{postnote}}  

\newcommand{\cfootcite}[1]{                                                                                         
  {\tiny{\citeauthor{#1}, \citetitle{#1}, \citejournal{#1}\citeyear{#1}}}} 

在此处输入图片描述

相关内容