我使用引用中的附加字段(例如\cite[§3.3]{Knu86}
)链接到我所引用的书籍/论文的特定部分。但是,我不能将这种格式用于我的论文。
是否可以在输出中隐藏附加文本(例如 §3.3),同时将其保留在实际引用中?例如,通过\cite
某种方式重新定义?
平均能量损失
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Knu86,
author = {Knuth, Donald E.},
year = {1986},
title = {The \TeX book},
}
\end{filecontents}
\begin{document}
\section{Introduction}
This works, yeah! \cite[p. 83]{Knu86}
\bibliographystyle{alpha}
\bibliography{\jobname}
\end{document}
答案1
是的,你可以!以下两行代码可以解决问题。
\let\oldcite\cite
\renewcommand{\cite}[2][]{\oldcite{#2}}
第一行将 -macro 的定义复制\cite
到宏\oldcite
。使用相同数量的参数(两个)和一个可选值更新命令,同时仅将第二个参数(引用键)解析为原始cite
-macro,而忽略第一个参数,基本上用 替换了\cite[...]{bib-key}
所有\cite{bib-key}
。
完整的文件如下所示。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Knu86,
author = {Knuth, Donald E.},
year = {1986},
title = {The \TeX book}
}
\end{filecontents}
\let\oldcite\cite
\renewcommand{\cite}[2][]{\oldcite{#2}}
\begin{document}
\section{Introduction}
This works, yeah! \cite[p. 83]{Knu86}
\bibliographystyle{alpha}
\bibliography{\jobname}
\end{document}
我还从标题的 bib-entry-line 中删除了逗号,因为它阻止 BiBTeX 在我的系统中正确解析文件。
答案2
如果您不使用额外的引用包,因此使用内核中的定义,您可以重新定义放置引用和后注的内部宏,以简单地删除后注
\documentclass{article}
\usepackage[utf8]{inputenc}
\makeatletter
\def\@cite#1#2{[{#1}]}
\makeatother
\begin{filecontents}{\jobname.bib}
@book{Knu86,
author = {Knuth, Donald E.},
year = {1986},
title = {The \TeX book},
}
\end{filecontents}
\begin{document}
This works, yeah! \cite[p.~83]{Knu86}
\bibliographystyle{alpha}
\bibliography{\jobname}
\end{document}
该宏的原始定义latex.ltx
是
\def\@cite#1#2{[{#1\if@tempswa , #2\fi}]}
#1
引用标签和#2
后记在哪里(以及\if@tempswa
后记是否存在的测试)。