我正在为小孩子制作工作表,让他们垂直进行个位数运算。我如何垂直设置它们以便:
- 一张没有答案的练习册。
- 带有答案的解决方案工作表。
该软件包xlop
似乎只能创建解决方案工作表。[见下文。] 我认为没有办法让它排除总和。
或者有吗?
或者我应该采取其他方法吗?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgf}
\usepackage{pgffor}
\usepackage{xlop}
\setlength\parindent{0pt}
\newcommand{\InitVariables}
{%
\pgfmathsetmacro{\A}{int(random(0,9)))}
\pgfmathsetmacro{\B}{int(random(0,9)))}
}
\newcommand{\VAdd}
{%
\InitVariables
\opadd[carryadd=false]{\A}{\B}}
\newcommand{\ManyVAdd}[1]
{%
\foreach \x in {1,...,#1}{\VAdd \hspace{2cm}
}}
\begin{document}
\ManyVAdd{5}
\end{document}
答案1
显然,我收到的手册副本比您的手册更有信息量。我建议将其退还给您的供应商并要求提供另一份。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgffor}
\usepackage{xlop}
\usepackage{parskip}
\newcommand{\InitVariables}{%
\pgfmathsetmacro{\A}{int(random(0,9)))}
\pgfmathsetmacro{\B}{int(random(0,9)))}
}
\newcommand{\VAdd}{%
\InitVariables
\opadd[carryadd=false, resultstyle=\leavegap, intermediarystyle=\leavegap]{\A}{\B}%
}
\newcommand*\leavegap[1]{\space}
\newcommand{\ManyVAdd}[1]{%
\foreach \x in {1,...,#1}{\VAdd \hspace{2cm}
}%
}
\begin{document}
\ManyVAdd{5}
\end{document}
编辑
原始问题没有提到解决方案。但是,根据评论,您可以尝试以下方法。此代码将在文档末尾的新页面上排版解决方案。它还消除了我在其他情况下得到的坏框。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgffor}
\usepackage{xlop}
\usepackage{parskip}
\newcommand{\InitVariables}{%
\pgfmathsetmacro{\A}{int(random(0,9)))}%
\pgfmathsetmacro{\B}{int(random(0,9)))}%
}
\newcommand{\VAdd}{%
\InitVariables
\opadd[carryadd=false, resultstyle=\leavegap, intermediarystyle=\leavegap]{\A}{\B}%
\immediate\write\writeall{%
\string\opadd [carryadd=false]{\A}{\B}\string\hfill%
}
}
\newcommand*\leavegap[1]{\space}
\newcommand{\ManyVAdd}[1]{%
\foreach \x in {1,...,#1}{\VAdd \hfill
}\par
\immediate\write\writeall{\string\par}%
}
\AtBeginDocument{%
\newwrite\writeall
\immediate\openout\writeall=\jobname.all
}
\AtEndDocument{%
\closeout\writeall
\clearpage
\section*{Solutions}
\input{\jobname.all}%
}
\begin{document}
\section*{Questions}
\ManyVAdd{5}
\end{document}
答案2
\showsums
这是一个自主开发的替代方案,由(T
或)州管辖F
。它可以处理多个多位加数。
\documentclass{article}
\usepackage{stringstrings,stackengine}
%%% \showsum based on http://tex.stackexchange.com/questions/219090/
%%% writing-manual-summation-of-two-numbers/219113#219113
\newcounter{mysum}
\newcommand\showsum[1]{%
\convertchar[q]{#1}{ }{+}%
\setcounter{mysum}{\numexpr\thestring\relax}%
\def\stackalignment{r}%
\if T\showsums\edef\tmp{\themysum}\else\edef\tmp{~}\fi%
\raisebox{-\dp\strutbox}{+\,}{\stackunder{\underline{\ \Longstack{#1}}}{%
\tmp}}%
}
\begin{document}
\def\showsums{T}
\showsum{1 2 3 4} $\qquad$
\showsum{23 567 34 32} $\qquad$
\showsum{1 3567 2334 3352 567}\bigskip
\def\showsums{F}
\showsum{1 2 3 4} $\qquad$
\showsum{23 567 34 32} $\qquad$
\showsum{1 3567 2334 3352 567}
\end{document}