动态构建的表格中存在不需要的 tikzpicture 空间

动态构建的表格中存在不需要的 tikzpicture 空间

我正在尝试构建一个动态表,其中每个单元格包含一个 tikzpicture,而其周围没有任何附加边距。

整个结构比较复杂,我做了一个例子:

\documentclass[10pt]{article}

\usepackage{ifthen}
\usepackage{tikz}
\usepackage{forloop}

\newcounter{Row}
\newcounter{Col}

\newcommand{\Foo}{%
    \par\raggedright\centering
    \setlength\tabcolsep{0pt}\renewcommand{\arraystretch}{0}%
    \begin{tabular}{|c|c|c|c|}
        \hline
        \forLoop{1}{3}{Row}
        {
            \forLoop{1}{4}{Col}
            {
                \begin{tikzpicture}
                \draw[black] (0,0) rectangle (1, -1);
                \end{tikzpicture}
                \ifthenelse{\equal{\theCol}{4}}{\\ \hline}{&}
            }
        }
    \end{tabular}
}%

\begin{document}

    \Foo

\end{document}

该代码的结果是每个 tikzpicture 的左侧都有不想要的边距。

生成的表格

我尝试编写不使用 for 循环的相同代码,但边距并未出现。

有人能帮我找出代码中的问题吗?

答案1

虚假的空间!

\documentclass[10pt]{article}

\usepackage{ifthen}
\usepackage{tikz}
\usepackage{forloop}

\newcounter{Row}
\newcounter{Col}

\newcommand{\Foo}{%
    \par\raggedright\centering
    \setlength\tabcolsep{0pt}\renewcommand{\arraystretch}{0}%
    \begin{tabular}{|c|c|c|c|}
        \hline
        \forLoop{1}{3}{Row}
        {% <--- HERE
            \forLoop{1}{4}{Col}
            {% <--- HERE
                \begin{tikzpicture}
                \draw[black] (0,0) rectangle (1, -1);
                \end{tikzpicture}
                \ifthenelse{\equal{\theCol}{4}}{\\ \hline}{&}
            }% <--- not so important
        }% <--- not so important
    \end{tabular}% <--- not so important
}

\begin{document}

    \Foo

\end{document}

标记为 的两个行尾表示HERE不需要的空格。我添加了一些%字符以保持一致性。

答案2

我刚刚用一些(刚刚测试过的)负 hspace 替换了你的表头c,结果如下:

图片

\documentclass[10pt]{article}

\usepackage{ifthen}
\usepackage{tikz}
\usepackage{forloop}

\newcounter{Row}
\newcounter{Col}

\newcommand{\Foo}{%
    \par\raggedright\centering
    \setlength\tabcolsep{0pt}\renewcommand{\arraystretch}{0}%
    \begin{tabular}{c@{\hskip -3.5pt}c@{\hskip -3.5pt}c@{\hskip -3.5pt}c}
        \forLoop{1}{3}{Row}
        {
            \forLoop{1}{4}{Col}
            {
                \begin{tikzpicture}
                \draw[draw=black] (0,0) rectangle (1, -1);
                \end{tikzpicture}
                \ifthenelse{\equal{\theCol}{4}}{\\}{&}
            }
        }
    \end{tabular}
}%

\begin{document}

    \Foo

\end{document}

相关内容