私が好んで使用する引用スタイルは、オプション付きのスタイルbiblatex
です。ただし、テキスト内の特定の参照を参照する必要がある場合があり、この場合のように切り替えたい場合があります。numeric-comp
autocite=superscript
authoryear
を使用すると\textcite
、上付き文字オプションが無効になります。 2 つの引用スタイルを混在させることができる新しい関数を作成することは可能ですか?
MWE:
\documentclass{report}
\begin{filecontents}{example.bib}
@article {Example_article,
AUTHOR = {Author, A. B.},
TITLE = {A example paper},
JOURNAL = {Example journal},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1-100}}
\end{filecontents}
\usepackage[style=numeric-comp,
autocite=superscript,
backend=biber
]{biblatex}
\addbibresource{example.bib}
\begin{document}
I normally cite like this \autocite{Example_article} which is great but sometimes I want to do this \textcite{Example_article} but it doesn't seem to to work.
\end{document}
これにより、次のものが生成されます。
私は通常このように引用します1これは素晴らしいのですが、時々この著者[1]を実行したいのですが、うまくいかないようです。
私が望むのは:
私は通常、このように引用します1これは素晴らしいのですが、時々、この Author (2018) を実行したいのですが、うまくいかないようです。
著者が複数いる場合は、著者 et al. (年) を 1 人だけ記載するのが望ましいです。
答え1
一般的に、複数のコマンド\DeclareCiteCommand
を にまとめるのではなく、を介して新しいコマンドを定義する方がよいでしょう。特定のユースケースではメリットが見られないかもしれませんが、悪い習慣は避けた方がよいでしょう。この方法は、特に前後の注釈がある場合や、複数のソースを一度に引用する場合に失敗する可能性があります。\cite...
\newcommand
\newcommand
\documentclass{report}
\usepackage[style=numeric-comp,
minbibnames=3,
maxbibnames=5,
maxcitenames=2,
mincitenames=1,
autocite=superscript,
backend=biber,
labeldateparts,
]{biblatex}
\usepackage{hyperref}
\newbibmacro{aycite}{%
\printtext[bibhyperref]{%
\printnames{labelname}%
\setunit{\addspace}%
\printtext[parens]{%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\printlabeldate
\setunit{\addsemicolon\space}%
\printtext{ref\adddot}%
\setunit{\addspace}%
\printfield{labelprefix}%
\printfield{labelnumber}%
\ifnumequal{\value{citecount}}{\value{citetotal}}
{\usebibmacro{postnote}}
{}}}}
\DeclareCiteCommand{\aycite}
{}
{\usebibmacro{citeindex}%
\usebibmacro{aycite}}
{\multicitedelim}
{}
\addbibresource{biblatex-examples.bib}
\begin{document}
How about this where \aycite{sigfridsson} discus a topic.
How about this where \aycite[cf.][1]{sigfridsson} discuss a topic.
How about this where \aycite{sigfridsson,worman} discuss a topic.
\printbibliography
\end{document}
答え2
私は満足できる答えを思いつきました。その過程で、次の 2 つの質問が役に立ちました。質問1そして質問2
また、参照ラベルに関する @cfr のコメントにも同意しますが、通常はパッケージを使用してhyperref
引用と参照がリンクされるため、この点は私の最優先事項ではありませんでした。通常は、参照テーブルのキーとして使用するのではなく、引用をクリックするだけです。そのため、ラベルをソリューションに組み込みました。
私が持っているのはこれです:
\documentclass{report}
\begin{filecontents}{example.bib}
@article {Example_article,
AUTHOR = {Author, A. B.},
TITLE = {A example paper},
JOURNAL = {Example journal},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1-100}}
\end{filecontents}
\usepackage[style=numeric-comp,
minbibnames=3,
maxbibnames=5,
maxcitenames=2,
mincitenames=1,
autocite=superscript,
backend=biber
]{biblatex}
\usepackage{hyperref}
\DeclareCiteCommand{\tabcite}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}}
\addbibresource{example.bib}
\newcommand{\citelink}[2]{\hyperlink{cite.\therefsection @#1}{\citeauthor{#1} (\citeyear{#1}; ref. \tabcite{#1})}}
\begin{document}
How about this where \citelink{Example_article}{} discusses a topic.
\printbibliography
\end{document}
これにより、次のようになります。
著者 (2018; ref. 1) がトピックについて議論しているこの部分はどうでしょうか。
適切な参考文献にリンクします。