如何在\cite[optional string]{key}
不删除“可选字符串”的情况下隐藏它?是否有一个全局开关可以禁用打印“可选字符串”?
\documentclass{article}
\begin{document}
\cite[page 1]{lamport94}
\begin{thebibliography}{9}
\bibitem{lamport94}
Leslie Lamport,
\emph{\LaTeX: a document preparation system},
Addison Wesley, Massachusetts,
2nd edition,
1994.
\end{thebibliography}
\end{document}
其结果是:
但我想要:
答案1
当\cite
后面跟着时[
,它会执行\@tempswatrue
,否则它会执行\@tempswafalse
。当\if@tempswa
返回 true 时,表示应该排版可选参数。
因此改为\@tempswatrue
即可\@tempswafalse
:
\documentclass{article}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\cite}{\@tempswatrue}{\@tempswafalse}{}{}
\makeatother
\begin{document}
\cite[page 1]{lamport94}
\begin{thebibliography}{9}
\bibitem{lamport94}
Leslie Lamport,
\emph{\LaTeX: a document preparation system},
Addison Wesley, Massachusetts,
2nd edition,
1994.
\end{thebibliography}
\end{document}
答案2
这是另一种选择。这里的想法是重新定义\@cite
以拒绝排版注释。定义了两个命令:\Rejectcitenote
,用于丢弃可选参数,以及\Alllowcitenote
,好吧,允许排版可选参数。这些命令可以随意使用:
\documentclass{article}
\makeatletter
\newcommand\Rejectcitenote{\def\@cite##1##2{[{##1}]}}
\newcommand\Allowcitenote{\def\@cite##1##2{[{##1\if@tempswa , ##2\fi}]}}
\makeatother
\begin{document}
\Rejectcitenote
\cite[page 1]{lamport94}
\Allowcitenote
\cite[page 1]{lamport94}
\begin{thebibliography}{9}
\bibitem{lamport94}
Leslie Lamport,
\emph{\LaTeX: a document preparation system},
Addison Wesley, Massachusetts,
2nd edition,
1994.
\end{thebibliography}
\end{document}