모눈종이에 문자(숫자)를 맞추는 방법은 무엇입니까?

모눈종이에 문자(숫자)를 맞추는 방법은 무엇입니까?

몇 가지 계산을 그래프 용지에 인쇄하고 싶습니다(숫자를 더하는 것과 같은 간단한 계산...).

표 형식의 (추악한) 예:

\begin{tabular}{|*{10}{r|}}\hline
 &   &   &   &  &   &   & &  &  \\\hline
 &   & 1 & + &  & 1 & = & &  & 2\\\hline
 & 1 & 1 & + &  & 1 & = & &  1 & 2\\\hline
 & 1 & 1 & + & 1& 1 & = & &  2 & 2\\\hline
 &   &   &   &  &   &   & &  &  \\\hline
\end{tabular}

여기에 이미지 설명을 입력하세요

그래프 용지/사각형 용지를 인쇄하는 몇 가지 솔루션이 있습니다.

그래서 모눈종이로 해결책을 찾아보았지만 네모난 상자에 글자를 쓰는 데 문제가 있었습니다.

지금까지 내 솔루션은 다음과 같습니다.

\documentclass[12pt,a6paper]{scrartcl} 
\usepackage{tikz}
\usepackage{ifthen}

\newcounter{gridypos}
\newenvironment{squaredpaper}[2][0.5cm]{% 
  \setcounter{gridypos}{#2}
  \newcommand\gridtext[2][\relax]{
    \ifthenelse{\equal{##1}{\relax}}{}{
         \setcounter{gridypos}{#2}
        \addtocounter{gridypos}{-##1}
        \addtocounter{gridypos}{1}
    }
    \node[anchor=west] at (0,0) [yshift=\value{gridypos}*#1-.5*#1]{##2};  %fixme one box per character(including spaces)
    \addtocounter{gridypos}{-1}%Next \gridtext one line lower
  }
  %Make the grid
  %Source: http://texwelt.de/wissen/fragen/2639/wie-kann-ich-kastchenpapier-zeichnen
  \begin{tikzpicture}[gray,step=#1]
     \pgfmathtruncatemacro\anzahl{(\linewidth-\pgflinewidth)/#1} % maximale Anzahl Kaestchen pro Zeile
     \draw (0,0) rectangle (\anzahl*#1,#2*#1) (0,0) grid (\anzahl*#1,#2*#1);
  }{
   \end{tikzpicture} 
}

\begin{document} 
  \begin{squaredpaper}{20}
    %Start on top line and go down.
    \gridtext{ 1+ 1= 2}
    \gridtext{ 1+ 2= 3}
    \gridtext{ 1+ 3= 4}
    \gridtext{ 1+10=11}
    %Make fix positions
    \gridtext[10]{10+10=20}  %Start in line 10
    \gridtext[15]{15+10=25}  %Start in line 15
    \gridtext[18]{18+10=28}  %Start in line 18
  \end{squaredpaper}

\end{document}

결과: 여기에 이미지 설명을 입력하세요

두 가지 누락된 사항이 있습니다.

  • \gridtext 매크로는 x 위치를 정의하는 두 번째 매개변수를 얻어야 합니다. (다른 문제가 해결되면 스스로 만들 수 있는 것이라고 생각합니다.)
  • 텍스트가 사각형 상자에 맞지 않습니다(상자당 문자(숫자, 연산자 또는 공백) 1개).

어떻게 할 수 있는지 몇 가지 아이디어가 있지만 어떻게 해야 할지 모르겠습니다.

  • 매개변수를 구문 분석하고 문자별로 상자에 위치를 지정합니다.
  • 내 squaredpaper 환경의 선택적 매개변수의 정확한 길이를 갖는 고정 폭 글꼴을 사용합니다.

비고:

  • \gridtext 매개변수의 공백을 준수해야 합니다. (이 작업이 어려우면 ~를 자리 표시자로 사용할 수 있습니다.)
  • 지금까지는 텍스트를 추가하고 싶지 않았지만 텍스트를 추가하기 위해 \gridtext의 *-변형을 사용하는 것이 좋을 수도 있습니다(하지만 필요하다면 스스로 할 수 있는 일이라고 생각합니다).

답변1

를 통해 입력에 수동으로 공백을 추가했습니다 ~. 문자 사이의 입력에서 단일 공백을 가로채도록 매크로를 작성할 수 있지만 부족한 LaTeX의 모든 구문 분석 메커니즘은 verbatim여러 공백을 단일 공백으로 읽습니다. 따라서 단단한 간격에 대한 올바른 접근 방식으로 \or 을 사용하는 것이 합리적입니다.~

의 결과는 \gridtext입력된 문자를 한 번에 한 문자씩 구문 분석하여 단위 격자 셀 크기의 상자에 설정함으로써 달성됩니다.

이제 매크로 \gridtext에는 수평 오프셋을 사각형으로 지정하는 두 번째 필수 인수가 있습니다.

\obeyspaces인수 에 하드 공간을 사용하도록 요구하는 대신 우리에게 편집되었습니다 \gridtext.

\documentclass[12pt,a6paper]{scrartcl} 
\usepackage{tikz}
\usepackage{ifthen}

\newcounter{gridypos}
\newenvironment{squaredpaper}[2][.5cm]{\obeyspaces% 
  \setcounter{gridypos}{#2}
  \newcommand\gridtext[3][\relax]{
    \ifthenelse{\equal{##1}{\relax}}{}{
         \setcounter{gridypos}{#2}
        \addtocounter{gridypos}{-##1}
        \addtocounter{gridypos}{1}
    }
%\tmp@dim0=#1\relax%
    \node[anchor=west] at (-.15,0) [yshift=\value{gridypos}*#1-.5*#1]{%
      \hspace{##2\dimexpr#1\relax}\spaceout{#1}{##3}};  %fixme one box per character(including spaces)
    \addtocounter{gridypos}{-1}%Next \gridtext one line lower
  }
  %Make the grid
  %Source: http://texwelt.de/wissen/fragen/2639/wie-kann-ich-kastchenpapier-zeichnen
  \begin{tikzpicture}[gray,step=#1]
     \pgfmathtruncatemacro\anzahl{(\linewidth-\pgflinewidth)/#1} % maximale Anzahl Kaestchen pro Zeile
     \draw (0,0) rectangle (\anzahl*#1,#2*#1) (0,0) grid (\anzahl*#1,#2*#1);
  }{
   \end{tikzpicture} 
}
\newcommand\spaceout[2]{\def\charwd{#1}\spaceouthelp#2\relax\relax\relax}
\def\spaceouthelp#1#2\relax{%
  \ifx#1\relax\else%
    \makebox[\charwd]{#1}%
    \spaceouthelp#2\relax%
  \fi%
}

\begin{document} 
\ttfamily%\scriptsize% WILL WORK IF UNCOMMENTED
  \begin{squaredpaper}{19}
    %Start on top line and go down.
    \gridtext{0}{1+ 1= 2}
    \gridtext{0}{1+ 2= 3}
    \gridtext{0}{1+ 3= 4}
    \gridtext{0}{1+10=11}
    %Make fix positions
    \gridtext[10]{3}{10+10=20}  %Start in line 10
    \gridtext[15]{4}{15+10=25}  %Start in line 15
    \gridtext[18]{5}{18+10=28}  %Start in line 18
  \end{squaredpaper}

\end{document}

여기에 이미지 설명을 입력하세요

크기를 로 변경해도 \scriptsize여전히 작동합니다.

여기에 이미지 설명을 입력하세요

그리드 크기가 변경되더라도(예: \begin{squaredpaper}[.4cm]{19}) 여전히 작동합니다.

여기에 이미지 설명을 입력하세요

관련 정보