\multirow{2}{*}{\cite{Smith1882}}
与 cite 包一起使用\usepackage{cite}
会导致出现不必要的空格。下面是一个最小工作示例:
LaTeX 文件:
\documentclass{article}
\usepackage{cite}
\usepackage{multirow}
\begin{document}
\begin{table}[htbp]
\begin{tabular}{|l|l|l|l|}
\hline
a & b & c & \multirow{2}{*}{\cite{Smith1882}} \\
d & e & f & \\
\hline
g & h & i & \cite{Smith1882} \\
\hline
\end{tabular}
\end{table}
\bibliographystyle{siam}
\bibliography{temp}
\end{document}
BibTeX 文件:
@ARTICLE{Smith1882,
author = {John Smith},
title = {I'm {J}ohn {S}mith},
year = {1882}
}
删除 cite 包可以解决问题,但显然意味着我无法使用 cite 包。
问题:我该如何解决这个问题?
我尝试将其更改为&\multirow{2}{*}{\cite{Smith1882}}
,并尝试添加不必要的括号\multirow{2}{*}{{}\cite{Smith1882}}
,但这些都没有用。
答案1
该cite
包会自动在\cite
命令前插入一个空格。这可以在中看到X\cite{Smith1882}X
。显然,该包未能检测到上下文中不应插入空格\multirow
。
你可以cite
使用该noadjust
选项加载,但这会在所有地方禁用该功能。或者,你可以使用以下命令暂时关闭它:
\documentclass{article}
\usepackage{cite}
\usepackage{multirow}
\begin{filecontents}{\jobname.bib}
@ARTICLE{Smith1882,
author = {John Smith},
title = {I'm {J}ohn {S}mith},
year = {1882}
}
\end{filecontents}
\makeatletter
\def\citenoadjust{\let\cite@adjust\@empty}
\makeatother
\begin{document}
\begin{table}[htbp]
\begin{tabular}{|l|l|l|l|}
\hline
a & b & c & \multirow{2}{*}{\citenoadjust\cite{Smith1882}} \\
d & e & f & \\
\hline
g & h & i & \cite{Smith1882} \\
\hline
\end{tabular}
\end{table}
a\cite{Smith1882}b
\bibliographystyle{siam}
\bibliography{\jobname}
\end{document}