如何解决使用 cite 包时 \multirow{2}{*}{\cite{Smith1882}} 插入不需要的空格的问题?

如何解决使用 cite 包时 \multirow{2}{*}{\cite{Smith1882}} 插入不需要的空格的问题?

\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}

在此处输入图片描述

相关内容