为了上数学课,我正在寻找一种简单的方法,用正方形图案填充线条的剩余空间。这种方法有一些缺点leaders
(对齐,请参阅使用方形图案自动填充 (leaders 与 tikz)),所以我使用了有没有办法测量一行文本的剩余空间?。
\documentclass{article}
\usepackage{tikzpagenodes}
\usepackage{etoolbox}
\usetikzlibrary{calc}
\newlength{\whatsleft}
\newcommand{\measureremainder}[2]{%
\begin{tikzpicture}[overlay,remember picture]
% Measure distance to right text border
\path let \p0 = (0,0), \p1 = (current page text area.east) in
[/utils/exec={\pgfmathsetlength#1{floor((\x1-\x0)/#2)*#2}\global#1=#1}];
\end{tikzpicture}%
}
\newcommand{\mysquarefill}[4][r]{%
\measureremainder{\whatsleft}{#2}%
\ifstrequal{#1}{l}{}{\hfill}%
\lower#4\hbox{\begin{tikzpicture}%
\draw[step=5mm,color=gray](0,0) grid (\whatsleft,#3);
\end{tikzpicture}}%
\ifstrequal{#1}{c}{\hfill\mbox{}}{}%
}
\begin{document}
\begin{itemize}
\item $\frac{8}{15} + \frac{7}{12}+ \frac{5}{12} +2=$\mysquarefill[l]{5mm}{10mm}{4mm}
\item $\frac{3}{4}$ von $ \frac{2}{5}=$\mysquarefill[r]{5mm}{15mm}{7mm}
\item $\frac{15}{28}\cdot\frac{14}{30}=$\mysquarefill[r]{5mm}{10mm}{4mm}
\end{itemize}
\end{document}
得出的结果为:
现在我想简化代码,特别是合并这两个宏。我如何使用类似
\draw[step=5mm,color=gray](0,0) grid (floor((x-coordinate-of(current page text area.east) - x-coordinate-of(0,0))/#2)*#2,#3);
与#2=size of squares
和#3=height of squareblock
?
对于 raggedleft/raggedright/center 机制,有没有更简单的解决方案?
答案1
我看不出你的实际问题是什么。(为什么@frougon 的答案无法令人满意)(你提到了对齐。对齐什么?水平还是垂直?只有你知道你想要什么。)
无论如何,我建议使用 Ti 进行以下构造钾Z 绘制正方形,使用\leaders
填充空格。如果你想自定义正方形,可以使用 Ti钾Z. 如果要正确对齐,请使用 TeX。玩得开心。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\newbox\astackofsquares
\def\mysquarefill#1#2{
\setbox\astackofsquares=\hbox{%
\tikz[x=#1,y=#1,baseline=#1*#2/2-.5ex]{
\path(0,0)(1,#1*#2);
\begin{pgfinterruptboundingbox}
\draw foreach\i in{1,...,#2}{(0,\i-1)rectangle(1,\i)};
\end{pgfinterruptboundingbox}
}%
}
\leaders\copy\astackofsquares\hfill\hbox{}
}
\begin{itemize}
\item $\frac{8}{15}+\frac{7}{12}+\frac{5}{12} +2=$\mysquarefill{5mm}{2}
\item $\frac{3}{4}$ von $\frac{2}{5}=$\mysquarefill{5mm}{3}
\item $\frac{15}{28}\cdot\frac{14}{30}=$\mysquarefill{5mm}{4}
\end{itemize}
\end{document}
居中版本
替换\leaders
为\cleaders
。
左侧齐平版本
我建议使用剪辑来代替做算术。
\documentclass{article}
\usepackage{tikzpagenodes}
\usepackage{showframe}\def\ShowFrameColor{\color{yellow}}
\begin{document}
\def\quarefillleft#1#2{
\tikz[remember picture,x=#1,y=#1,baseline=#1*#2/2-.5ex]{
\path(0,0)(0,#1*#2);
\begin{pgfinterruptboundingbox}
\clip(-1,-1)rectangle(current page text area.north east);
\draw(0,0)grid[step=#1](20cm,#2);
\end{pgfinterruptboundingbox}
}
}
\begin{itemize}
\item $\frac{8}{15}+\frac{7}{12}+\frac{5}{12} +2=\quarefillleft{5mm}{2}$
\item $\frac{3}{4}$ von $\frac{2}{5}=\quarefillleft{4mm}{3}$
\item $\frac{15}{28}\cdot\frac{14}{30}=\quarefillleft{3mm}{4}$
\end{itemize}
\end{document}