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
不是必需的。