总体概述
我制作了中文方格用于手写练习。目标是充分利用 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 评论
正如您所看到的,我只是手动多次调用该命令,\symbolbox
理想情况下它应该是循环的。
问题
如何让图案循环直至填满整个页面?
答案1
这是实现此目的的方法。一些注释。
Tikz 不经常与 配合使用。请在 内\newcommand
使用其等效项。\pic
Tikz
这里我将其称为symb
。它输出相同的字符。如果要传递字符,请查找\arg
或args
请手册。
两个循环都是手动设置的。请注意负 y 方向。单位为厘米。\pic
像调用\node
s 一样调用,并将图片名称作为文本参数传递。请参阅 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}
}%
并使用\leaders
TeX 原语
\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}