Прежде всего, мои извинения за мой английский, я хотел бы писать по-английски лучше, чем я это делаю, и я надеюсь, что я смогу объясниться, чтобы вы, ребята, поняли, что я хочу сделать. Я новичок в LaTex, я начал изучать его несколько дней назад, нашел несколько полезных ресурсов о LaTex и некоторых пакетах и смог написать этот код:
\documentclass{article}
\usepackage{pgf}% http://ctan.org/pkg/pgf
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\usepackage{xlop}% http://ctan.org/pkg/xlop
\usepackage{xparse}% http://ctan.org/pkg/xparse
\makeatletter
\newcommand{\@op@top}[4]{%
\begin{tabular}[t]{@{\ }c@{\hspace*{#1}}r}
& \pgfmathprintnumber{#3} \\
\smash{\raisebox{.5\normalbaselineskip}{#2}} & \pgfmathprintnumber{#4} \\ \hline
}
\NewDocumentCommand{\@op@top@bottom}{m s O{1em} m m}{%
\@op@top{#3}{#1}{#4}{#5}%
\IfBooleanTF{#2}{}{%
& \pgfmathsetmacro{\result}{#4\@@op#5}\pgfmathprintnumber{\result}%
}%
\end{tabular}%
}
\newcommand{\OpAdd}{\def\@@op{+}\@op@top@bottom{$+$}}
\newcommand{\OpSub}{\def\@@op{-}\@op@top@bottom{$-$}}
\newcommand{\OpMul}{\def\@@op{*}\@op@top@bottom{$\times$}}
\newcommand{\OpDiv}{\def\@@op{/}\@op@top@bottom{$\div$}}
\makeatother
\setlength{\parindent}{0pt}% Just for this example
\begin{document}
\OpAdd*[10pt]{1234}{5678} \par \bigskip
\OpSub*[10pt]{246}{135} \par \bigskip
\OpMul*[10pt]{12}{13} \par \bigskip
\newcommand{\placeholder}[1]{--}% Print -- regardless of the input
\newcommand{\gobble}[1]{}% Print <nothing> regardless of the input
% \opdiv[resultstyle=\gobble,remainderstyle=\gobble]{196}{8}
\newcommand\myrule[1]{\multicolumn{1}{| l}{#1}}
\[
\begin{array}{rl}
478 & \myrule{7}\\
\cline{2-2}
\end{array}
\]
\end{document}
Он показывает четыре математические операции:
Как вы, ребята, видите, деление не выровнено по левому краю, как и остальные операции, и интересно, как это сделать. Кроме того, я хотел бы знать, какой лучший способ добавить больше операций, скажем, 3 или 4 добавления в той же строке, и сделать то же самое в других строках, но показать все операции так, как будто они находятся в массиве, и, наконец, добавить маркер к каждой из них, например a), b), c) и т. д. Я буду очень признателен за любую помощь в этом. С уважением.
решение1
Пакет tasks
— это хороший пакет для организации вещей в формате упражнений. Ваша проблема с выравниванием была вызвана использованием \[ ... \]
отображаемой математики вместо встроенной математики. Вот все четыре ваших примера в ряд и пронумерованы:
\documentclass{article}
\usepackage{pgf}% http://ctan.org/pkg/pgf
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\usepackage{xlop}% http://ctan.org/pkg/xlop
\usepackage{xparse}% http://ctan.org/pkg/xparse
\usepackage{tasks}
\makeatletter
\newcommand{\@op@top}[4]{%
\begin{tabular}[t]{@{\ }c@{\hspace*{#1}}r}
& \pgfmathprintnumber{#3} \\
\smash{\raisebox{.5\normalbaselineskip}{#2}} & \pgfmathprintnumber{#4} \\ \hline
}
\NewDocumentCommand{\@op@top@bottom}{m s O{1em} m m}{%
\@op@top{#3}{#1}{#4}{#5}%
\IfBooleanTF{#2}{}{%
& \pgfmathsetmacro{\result}{#4\@@op#5}\pgfmathprintnumber{\result}%
}%
\end{tabular}%
}
\newcommand{\OpAdd}{\def\@@op{+}\@op@top@bottom{$+$}}
\newcommand{\OpSub}{\def\@@op{-}\@op@top@bottom{$-$}}
\newcommand{\OpMul}{\def\@@op{*}\@op@top@bottom{$\times$}}
\newcommand{\OpDiv}{\def\@@op{/}\@op@top@bottom{$\div$}}
\newcommand{\placeholder}[1]{--}% Print -- regardless of the input
\newcommand{\gobble}[1]{}% Print <nothing> regardless of the input
\newcommand\myrule[1]{\multicolumn{1}{| l}{#1}}
\makeatother
\setlength{\parindent}{0pt}% Just for this example
\begin{document}
\begin{tasks}(4)
\task \OpAdd*[10pt]{1234}{5678} \par \bigskip
\task \OpSub*[10pt]{246}{135} \par \bigskip
\task \OpMul*[10pt]{12}{13} \par \bigskip
\task $\begin{array}{rl}
478 & \myrule{7}\\
\cline{2-2}
\end{array}$
\end{tasks}
\end{document}