在 LaTeX 中划掉表格行

在 LaTeX 中划掉表格行

ulem这两个包都不允许soul在表格环境中删除整行,例如:

\sout{1,3-Cyclopentadiene    & 161.39    & 148.19    & 155.65    & 153.43    & 154.7     & 5.5  & 118.20} \\

还有其他选择吗?

xcolor用表选项打包clashesdcolumn这样看起来不是一个选项

答案1

\hline作为一种快速而肮脏的修复方法,您可以通过减少行前后的行间距来叠加一行:

\documentclass{article}
\begin{document}
\begin{tabular}{lll}
aaaaa & bbbbb & ccccc \\
11111 & 22222 & 33333 \\ [-1.5ex]
\hline \\ [-1.5ex]
xxxxx & yyyyy & zzzzz \\
\end{tabular}
\end{document}

答案2

可以使用 TikZ 来做到这一点:

\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
\tikzstyle{na} = [shape=rectangle,inner sep=0pt]

\newcommand{\ptStrikeA}[1]{     % Left 'point' to be striked (A)
    \tikz[baseline=(A.base)]\node[na](A){#1};
  }
\newcommand{\ptStrikeB}[1]{     % Right 'point' to be striked (B)
    \tikz[baseline=(B.base)]\node[na](B){#1};
  }  

\newcommand{\strike}{   % Strike from A to B
    \begin{tikzpicture}[overlay]
        \draw (A.west) -- (B.east);
    \end{tikzpicture}
  }

\begin{document}
    \begin{tabular}{lll}
                    aaaaa & bbbbb & ccccc \\
        \ptStrikeA{11111} & 22222 & \ptStrikeB{33333} \\
                    xxxxx & yyyyy & zzzzz \\
    \end{tabular}
    \strike
\end{document}

这样,您可以删除整行,也可以删除其中的一部分。将命令\strike放在环境之外,可以将其嵌入到 beamer 覆盖层中。

答案3

[扩展Dorian的答案]

为了在单个表中实现多个删除线,您可以动态指定开始/结束点,而不是声明更多命令:

\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
\tikzstyle{na} = [shape=rectangle,inner sep=0pt]

% end point for strike
\newcommand{\ptStrike}[2]{    
    \tikz[baseline=(#1.base)]\node[na](#1){#2};
}

% draw strike between two endpoints
\newcommand{\strike}[2]{  
    \begin{tikzpicture}[overlay]
        \draw (#1.west) -- (#2.east);
    \end{tikzpicture}
}

\begin{document}
    \begin{tabular}{lll}
        aaaaa & bbbbb & ccccc \\
        \ptStrike{A}{11111} & 22222 & \ptStrike{B}{33333} \\
        xxxxx & yyyyy & zzzzz \\
        \ptStrike{C}{33333333} & 55555555 & \ptStrike{D}{88888888}\\
    \end{tabular}
    \strike{A}{B} % draw strike from A to B
    \strike{C}{D} % draw strike from C to D
\end{document}

答案4

使用{NiceTabular}nicematrix您可以轻松地使用 创建的节点在 TikZ 中划出一行nicematrix

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

\begin{NiceTabular}{lll}[hvlines]
    aaaaa & bbbbb & ccccc \\
    11111 & 22222 & 33333 \\
    xxxxx & yyyyy & zzzzz \\
    33333333 & 55555555 & 88888888 \\
\CodeAfter
   \tikz \draw [red] (2.5-|1) -- (2.5-|last) ; 
   \tikz \draw [thick,red] ([yshift=-4pt]4-|1) -- ([yshift=4pt]5-|last) ; 
\end{NiceTabular}

\end{document}

上述代码的输出

相关内容