![모눈종이에 문자(숫자)를 맞추는 방법은 무엇입니까?](https://rvso.com/image/305890/%EB%AA%A8%EB%88%88%EC%A2%85%EC%9D%B4%EC%97%90%20%EB%AC%B8%EC%9E%90(%EC%88%AB%EC%9E%90)%EB%A5%BC%20%EB%A7%9E%EC%B6%94%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
몇 가지 계산을 그래프 용지에 인쇄하고 싶습니다(숫자를 더하는 것과 같은 간단한 계산...).
표 형식의 (추악한) 예:
\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}
그래프 용지/사각형 용지를 인쇄하는 몇 가지 솔루션이 있습니다.
- http://texwelt.de/wissen/fragen/2639/wie-kann-ich-kastchenpapier-zeichnen
- http://www.texample.net/tikz/examples/graph-paper/
- 레이아웃 생성을 돕는 패키지? 그래프 용지가 배경에 있나요?
- http://www.ctan.org/pkg/graphpap
그래서 모눈종이로 해결책을 찾아보았지만 네모난 상자에 글자를 쓰는 데 문제가 있었습니다.
지금까지 내 솔루션은 다음과 같습니다.
\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}
) 여전히 작동합니다.