在 \textcite{} 中使用 \input

在 \textcite{} 中使用 \input

Test.tex我有一个名为containting 的文件

ID1

我正在尝试\textcite{}使用该input{}命令将此文件提供给命令。

\begin{filecontents*}{References.bib}
@article{ID1,
    Author = {Some Author},
    Journal = {Some Journal},
    Title = {Some Title},
    Year = {2016},
    Volume = {1(1)},
    Pages = {1-10}}
\end{filecontents*}
\documentclass{article}
\usepackage{catchfile}
\usepackage[style=authoryear]{biblatex}
\addbibresource{References.bib}
\begin{document}
\textcite{\input{./Test.tex}}
\printbibliography
\end{document}

运行此程序会出现以下错误:

! Argument of \blx@citeargs@i has an extra }.
<inserted text> 
                \par 
l.15 ^^I\textcite{\input{./Test.tex}}

看着线程,我尝试使用来解决问题

\begin{filecontents*}{References.bib}
@article{ID1,
    Author = {Some Author},
    Journal = {Some Journal},
    Title = {Some Title},
    Year = {2016},
    Volume = {1(1)},
    Pages = {1-10}}
\end{filecontents*}
\documentclass{article}
\usepackage{catchfile}
\usepackage[style=authoryear]{biblatex}
\addbibresource{References.bib}
\begin{document}
\CatchFileDef\filecontent{Test.tex}{}
\expandafter\textcite\expandafter{\filecontent}
\printbibliography
\end{document}

但这并没有完全解决我的问题。参考文献列表没问题,但文中引用的只是ID1而不是Author (2016)

答案1

你忘了说\endlinechar=-1。如果你查看日志文件,你会发现

LaTeX Warning: Citation 'ID1 ' on page 1 undefined on input line 23.

这解释了问题,因为在行尾添加了空格。使用\endlinechar=-1,不会添加行尾字符。

在示例中,我过去\jobname不破坏我的文件。

\begin{filecontents*}{\jobname.bib}
@article{ID1,
    Author = {Some Author},
    Journal = {Some Journal},
    Title = {Some Title},
    Year = {2016},
    Volume = {1(1)},
    Pages = {1-10}}
\end{filecontents*}
\begin{filecontents*}{\jobname.key}
ID1
\end{filecontents*}

\documentclass{article}
\usepackage{catchfile}
\usepackage[style=authoryear]{biblatex}

\addbibresource{\jobname.bib}

\begin{document}

\CatchFileDef\filecontent{\jobname.key}{\endlinechar=-1 }
\textcite{\filecontent}

\printbibliography

\end{document}

请注意,这\expandafter不是必需的。

在此处输入图片描述

相关内容