重复该模式,直到页面填满

重复该模式,直到页面填满

总体概述

我制作了中文方格用于手写练习。目标是充分利用 A4 纸上的最大空间(边距为 1cm)。

平均能量损失

目前这是我的代码:

\documentclass[a4paper]{article}
\usepackage{xeCJK}
\usepackage{tikz}
\usepackage[margin=1cm]{geometry}
\pagenumbering{gobble}

\setCJKmainfont{AR PL UKai CN}

\newcommand\symbolbox[1]{%
\begin{tikzpicture}%
    \draw (0,0) rectangle (1,1);%
    \draw[gray] (0,0) -- (1,1);%
    \draw[gray] (0,1) -- (1,0);%
    \node at (0.5,0.5) {\Huge #1}; 
\end{tikzpicture}%%
%\hspace{-0.65em}
\hspace{-0.95em}
}%


\begin{document}

\raggedright
\noindent
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}
\symbolbox{你}


\end{document}

当前渲染

MWE 渲染

MWE 评论

正如您所看到的,我只是手动多次调用该命令,\symbolbox理想情况下它应该是循环的。

问题

如何让图案循环直至填满整个页面?

答案1

这是实现此目的的方法。一些注释。

Tikz 不经常与 配合使用。请在 内\newcommand使用其等效项。\picTikz

这里我将其称为symb。它输出相同的字符。如果要传递字符,请查找\argargs手册

两个循环都是手动设置的。请注意负 y 方向。单位为厘米。\pic像调用\nodes 一样调用,并将图片名称作为文本参数传递。请参阅 pgfmanual 以将参数传递给 \pic。

您不需要/不能使用垂直和水平间距,除非您在节点文本字段内执行此操作。大多数情况下,通过 Tikz-means 进行所有对齐,即设置坐标、位置、锚点等。

为了更好的可见性,我显示了框架。我无法设置您的默认字体。

% XeTex or XeLaTeX needed

\documentclass[a4paper]{article}
\usepackage{xeCJK}
\usepackage{tikz}
\usepackage[margin=1cm,showframe=true]{geometry}
\pagenumbering{gobble}

%\setCJKmainfont{AR PL UKai CN}


\begin{document}
 \begin{tikzpicture}[
    symb/.pic={
        \draw (0,0) rectangle (1,1);%
        \draw[gray] (0,0) -- (1,1);%
        \draw[gray] (0,1) -- (1,0);%
        \node at (0.5,0.5) {\Huge 你};
        },
 ]
    \foreach \x in {0,1,2,3,...,17}
        \foreach \y in {0,-1,-2,...,-26}
            \pic at (\x,\y) {symb};
 \end{tikzpicture}
\end{document}

结果

答案2

不要\hspace在你的定义中插入:

\def\symbolbox #1{%
\begin{tikzpicture}%
    \draw (0,0) rectangle (1,1);%
    \draw[gray] (0,0) -- (1,1);%
    \draw[gray] (0,1) -- (1,0);%
    \node at (0.5,0.5) {\Huge #1}; 
\end{tikzpicture}%%
%\hspace{-0.65em}
%\hspace{-0.95em}
}%

并使用\leadersTeX 原语

\begin{document}

\setbox0=\hbox{\symbolbox{你}}
\setbox0=\hbox to\hsize{\leaders\box0\hfil}

\topskip=0pt
\null \leaders\copy0\vfill
\break
\null \leaders\copy0\vfill
\break

\end{document}

答案3

您的评论/问题有几种方法可以做到这一点。

这种方法使用ifthen包。我用它来修改Tikz代码。您也可以xcolor在文本字段内(\pic 内)使用,但您需要在参数传递上花费一些精力。

此外,如果您想要灰色符号但黑色网格,您需要花费更多的精力来传递参数\pic

我使用了颜色混合器black!50,因为我总是忘记它Tikz想要的grey或者gray这里的预定义颜色......

结果

% XeTex or XeLaTeX needed

\documentclass[a4paper]{article}
\usepackage{xeCJK}
\usepackage{tikz}
\usepackage[margin=1cm,showframe=true]{geometry}
\pagenumbering{gobble}
\usepackage{ifthen}     % <<< new

%\setCJKmainfont{AR PL UKai CN}


\begin{document}
 \begin{tikzpicture}[
    symb/.pic={
        \draw (0,0) rectangle (1,1);%
        \draw[gray] (0,0) -- (1,1);%
        \draw[gray] (0,1) -- (1,0);%
        \node at (0.5,0.5) {\Huge 你};
        },
 ]
    \foreach \x in {0,1,2,3,...,17}
        \foreach \y in {0,-1,-2,...,-26}
            \ifthenelse{\y>-2}
                {\pic[black!50] at (\x,\y) {symb}}
                {\pic at (\x,\y) {symb}};
 \end{tikzpicture} 
\end{document}

相关内容