将选项与宽度对齐

将选项与宽度对齐

我想将问题选项与列宽对齐 在此处输入图片描述 像这样:

在此处输入图片描述

\documentclass[a4paper,9pt]{extarticle}
\usepackage[margin=1.5cm]{geometry}
\usepackage{amsmath}
\usepackage{ragged2e}
\usepackage{tasks}
\usepackage{multicol}
\usepackage{enumitem}
\newlength{\taskindent}
\settowidth{\taskindent}{\hspace{0.09cm}\text{m)}}
\settasks{
    item-indent=\taskindent,
    label-format=\MakeUppercase, 
    after-skip = 3ex,
}

\begin{document}
\begin{multicols*}{2}
\begin{enumerate}[left=0pt,label=\bfseries\arabic*.,ref=\arabic*,resume]
\item 
\begin{justify}
        \textbf{I want to align options to width but not aligned as seen} 
\end{justify}
\begin{tasks}(5)
                \task $1$
                \task $2$
                \task $3$
                \task $4$
                \task $5$
            \end{tasks}
\end{enumerate}
\vfill\null
\columnbreak

\begin{enumerate}[left=0pt,label=\bfseries\arabic*.,ref=\arabic*,resume]
\item 
\begin{justify}
        \textbf{I want to align options to width but not aligned as seen} 
\end{justify}
\begin{tasks}(5)
                \task $1$
                \task $2$
                \task $3$
                \task $4$
                \task $5$
            \end{tasks}
\end{enumerate}
\end{multicols*}
\end{document}

答案1

tasks包装会将每件物品排版在一个固定的框中,例如

<tasks>    ::= <fwd-item> (<item-sep> <fwd-item>)*
<fwd-item> ::= \hbox to <some-fixed-width>{<item>}

因此将其改为

<tasks>.   ::= <item> (\hfill <item>)*

需要大量修补。

但是,您可以通过为 选取适当的值来模拟所需的效果column-set=<length>,只要剩余的行宽(除以每行的项目数)足够宽来排版每个项目文本。例如,使用column-sep=3em(和debug来绘制边界框),

\documentclass[a4paper,9pt]{extarticle}
\usepackage[margin=1.5cm]{geometry}
\usepackage{amsmath}
\usepackage{ragged2e}
\usepackage{tasks}
\usepackage{multicol}
\usepackage{enumitem}
\newlength{\taskindent}
\settowidth{\taskindent}{\hspace{0.09cm}\text{m)}}
\settasks{
    item-indent=\taskindent,
    label-format=\MakeUppercase, 
    after-skip = 3ex,
    debug
}

\begin{document}
\begin{multicols*}{2}
Default:
\begin{enumerate}[left=0pt,label=\bfseries\arabic*.,ref=\arabic*,resume]
\item 
  \textbf{I want to align options to width but not aligned as seen} 
\begin{tasks}(5)
    \task $1$
    \task $2$
    \task $3$
    \task $4$
    \task $5$
\end{tasks}

\settasks{column-sep=3em}%
Setting \verb|column-sep=3em|:

\item 
  \textbf{I want to align options to width but not aligned as seen} 
\begin{tasks}(5)
    \task $1$
    \task $2$
    \task $3$
    \task $4$
    \task $5$
\end{tasks}
\end{enumerate}
\end{multicols*}
\end{document}

在此处输入图片描述

相比@CarLaTeX 的回答它使用itemjoin并内联来自enumitem包的列表环境,

  • 当项目文本的宽度发生变化(但仍适合项目允许的最大宽度)时,tasks确保不同多项选择题中的项目垂直对齐,而内联列表环境没有此功能。
  • 当项目文本的宽度足够大时,tasks将按照项目宽度的宽度将文本换行,而内联列表环境将按照行宽的宽度将整个列表换行。

答案2

您可以使用enumerate*以下enumitem包:

\documentclass[a4paper,9pt]{extarticle}
\usepackage[margin=1.5cm]{geometry}
\usepackage{amsmath}
\usepackage{ragged2e}
\usepackage{multicol}
\usepackage[inline]{enumitem}

\begin{document}
\begin{multicols*}{2}
\begin{enumerate}[left=0pt,label=\bfseries\arabic*.,ref=\arabic*,resume]
\item \bfseries I want to align options to width but not aligned as seen

    \begin{enumerate*}[before*={\noindent},label=\Alph*), font=\normalfont,itemjoin=\hfill]
                    \item $1$
                    \item $2$
                    \item $3$
                    \item $4$
                    \item $5$
    \end{enumerate*}
\end{enumerate}
\vfill\null
\columnbreak
\begin{enumerate}[left=0pt,label=\bfseries\arabic*.,ref=\arabic*,resume]
\item \bfseries I want to align options to width but not aligned as seen

    \begin{enumerate*}[before*={\noindent},label=\Alph*), font=\normalfont,itemjoin=\hfill]
                    \item $1$
                    \item $2$
                    \item $3$
                    \item $4$
                    \item $5$
    \end{enumerate*}
\end{enumerate}
\end{multicols*}
\end{document}

在此处输入图片描述

如果您的列表总是这样,您可以使用 来设置它们\setlist[enumerate,<levels>]{<format>}

相关内容