考虑一下这个 MWE(取自这个答案):
\documentclass{article}
\makeatletter
\newcommand*{\phoncrossbar}{\leavevmode\leaders\hrule height .5pt\hfill\kern\z@}
\newcommand*{\phonfeat}[1]{%
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\makeatother
%\usepackage[notipa]{ot-tableau}
\begin{document}
\phonfeat{\phoncrossbar\\ +abcdefg}
\end{document}
如果我取消注释该行ot-tableau
,\hrule
不再填充括号内的空间:
我怎样才能阻止该ot-tableau
包这样做(希望不会破坏该包的一些必要功能)?
答案1
罪魁祸首是colortbl
。这个问题可以通过高阶无限胶水来解决。
\documentclass{article}
\usepackage{colortbl}
\makeatletter
\newcommand*{\phoncrossbar}{%
\leavevmode\leaders\hrule height .5pt\hskip 0pt plus 1filll\kern\z@
}
\newcommand*{\phonfeat}[1]{%
\ensuremath{%
\left[\begin{tabular}{@{}l@{}}#1\end{tabular}\right]%
}%
}
\makeatother
\begin{document}
\begin{tabular}{l}abcdef\\\hrulefill\end{tabular}
\phonfeat{\phoncrossbar\\ +abcdefg}
\end{document}
正如您所见,\hrulefill
并没有真正填满这条线,但修改后确实\phoncrossbar
填满了。