我如何修复使用“renewenvironment{table}”格式化的表格的位置?

我如何修复使用“renewenvironment{table}”格式化的表格的位置?

我曾经renewenvironment{table}将所有表格规则都设为绿色。我还想修复其中一些规则的位置,例如使用包选项Hfloat我尝试了如下所示的解决方案,但出现了错误。如果我注释掉 \restylefloat{table},我只会[H]在表格旁边看到一个 (韦迪 https://www.overleaf.com/read/jvxrhvhqmmgh)。

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{float}
\usepackage{xcolor}
\usepackage{tabu}
\usepackage{colortbl}

\restylefloat{table}

\makeatletter
\renewenvironment{table}
     {\@float{table}\taburulecolor{green}\arrayrulecolor{green}     }
     {\end@float}
\makeatother

\begin{document}

\begin{table}[H]
    \centering
    \caption{This is a caption.}
    \label{tab:atable}
    \begin{tabular}{c|c|c}
        \hline
        1 & 2 & 3 \tabularnewline
        \hline
        4 & 5 & 6 \tabularnewline
        \hline
    \end{tabular}
\end{table}

\end{document}

答案1

在正常情况下,你只需要先进行设置,然后调用\@float{table}。但是在这里你使用了\restylefloat,这会将的定义更改为与内核定义\table不同的内容。\@float{table}

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{float}
\usepackage[table]{xcolor}
\usepackage{tabu}

\restylefloat{table}

\makeatletter
\let\float@table\table % must be after \restylefloat{table}
\renewenvironment{table}
  {\taburulecolor{green}\arrayrulecolor{green}\float@table}
  {\end@float}
\makeatother

\begin{document}

\begin{table}[H]
    \centering
    \caption{This is a caption.}
    \label{tab:atable}
    \begin{tabular}{c|c|c}
        \hline
        1 & 2 & 3 \tabularnewline
        \hline
        4 & 5 & 6 \tabularnewline
        \hline
    \end{tabular}
\end{table}

\end{document}

请注意,您不应该调用colortbl,而是将选项传递tablexcolor

相关内容