
Para minhas aulas de matemática estou procurando uma maneira fácil de preencher o espaço restante de uma linha com um padrão quadrado. Existem algumas desvantagens comleaders
(alinhamento, vejapreenchimento automático com padrão quadrado (líderes vs. tikz)), então usei as explicações emExiste uma maneira de medir o espaço restante de uma linha de texto?.
\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}
Isso produz:
Agora gostaria de simplificar o código e principalmente combinar as duas macros. Como faço para usar algo como
\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);
com #2=size of squares
e #3=height of squareblock
?
E existe uma solução mais fácil para o mecanismo esquerdista/direito/central?
Responder1
Não consigo ver qual é a sua pergunta real. (Por que a resposta de @frougon não é satisfatória) (Você mencionou alinhamento. De quê? Horizontalmente ou verticalmente? Só você sabe o que quer.)
De qualquer forma, proponho a seguinte construção que utiliza TikZ para desenhar quadrados e usar \leaders
para preencher espaços. Se você quiser personalizar quadrados, brinque com TikZ. Se você quiser alinhar corretamente, brinque com o TeX. Divirta-se.
\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}
versão centrada
substituir \leaders
por \cleaders
.
versão nivelada à esquerda
Proponho usar um clipe em vez de fazer contas.
\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}