我有一个自定义脚注引用命令,通过修改这个答案方式如下:
\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}
答案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}}}}