對齊、排列、項目符號

對齊、排列、項目符號

首先,我對我的英文感到抱歉,我希望我能用英文寫得比我更好,我希望我能解釋自己,這樣你們就能明白我想做什麼。我是 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}

程式碼的輸出

相關內容