使用虚拟值自动填充空单元格

使用虚拟值自动填充空单元格

我正在为我的论文设计一个大表格的布局。如果表格不是空白的,那就太好了,它应该包含所有带有虚拟值的空单元格,就像x 这样只需输入即可&x&x&x&x&x,但每次我更改列数时,我都必须手动填充每一行的确切数量,而x&x&x&x行数超过 60 行时,可能会非常模糊。

我可以在表格开头说一些简单的步骤吗,就像tikz matrix我可以在哪里定义一样empty cells = Valuexyz,以便所有单元格都填充虚拟值?

只应替换空单元格。不应替换所有包含内容的单元格。

梅威瑟:

\documentclass[a4paper]{article} 
\usepackage{booktabs} 
\begin{document} 
\begin{tabular}{llllcccccccccccccccccccccccccccccccccccccccccccccccccccccccc}
\toprule
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\\
\bottomrule
\end{tabular}
\end{document}

我的表格如下:

现在的进展

答案1

以下方法使用cellcoll包来收集单元格内容,然后\IfEq使用包xstring来测试单元格是否为空(然后打印-)(然后按原样打印单元格内容#1)。

\documentclass{article}

\usepackage{xstring}
\usepackage{array,collcell}
\newcolumntype{C}{>{\collectcell\checkempty}c<{\endcollectcell}}
\def\checkempty#1{%
   \IfEq{#1}{}{-}{#1}%
}

\begin{document}
\begin{tabular}{CCC}
   &&X\\
   &&\\
   &X&\\
   O&X&\\
   X&&T\\
\end{tabular}
\end{document}

答案2

如果您需要一种轻松更改表格列数的方法,此方法应该会有所帮助。它的工作原理是使用循环输入&x您拥有的每一列。

要更改表中的列数,只需调整参数\numcols

表格中填充了“x&”

\documentclass[a4paper]{article} 
\usepackage{booktabs}

\newcounter{countA}%
\newcommand{\numcols}{20}

\newcommand{\repeatentry}[2]{%
    \def\myline{#1}%
    \setcounter{countA}{1}%
    \loop\ifnum\thecountA<#2%
        \stepcounter{countA}%
        \edef\myline{\myline & #1}%
    \repeat%
    \myline{}%
}

\begin{document} 
\begin{tabular}{|*{\numcols}{c|}}
    \toprule
    \repeatentry{x}{\numcols}\\
    \repeatentry{x}{\numcols}\\
    \repeatentry{x}{\numcols}\\
    \bottomrule
\end{tabular}
\end{document}

编辑:

为了允许格式化输入\repeatentry命令,必须进行以下更改。这样做是为了在\edef添加另一列时保护格式化的扩展。这比使用 更可取\noexpand,因为 的嵌套\edef需要 的类似嵌套\noexpand

\makeatletter
\newcommand{\repeatentry}[2]{%
    \def\myline{#1}%
    \setcounter{countA}{1}%
    \loop\ifnum\thecountA<#2%
        \stepcounter{countA}%
        \protected@edef\myline{\myline & #1}%
    \repeat%
    \myline{}%
}
\makeatother

相关内容