перечислить в многоколонках

перечислить в многоколонках

На следующем изображении показано то, что я ищу:

введите описание изображения здесь

По сути, я хочу, чтобы нумерация происходила так, как показано выше, но с использованием пакета multicoland enumitem. Но когда я пробую это с помощью следующего кода:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{enumitem,multicol}
\begin{document}
\begin{enumerate}
\item Evaluate each of the following if $x$ is a non-zero real number.
    \begin{multicols}{2}
    \begin{enumerate}[itemsep=1cm]% The item sep is my choice here.
    \item $\dfrac{|x|}{x}$
    \item $\dfrac{x}{|x|}$
    \item $\dfrac{|-x|}{-x}$
    \item $|x|-|-x|$
    \end{enumerate} 
    \end{multicols}
\end{enumerate}
\end{document}

Я получил:

введите описание изображения здесь

По сути, я хочу, (b)чтобы было там, где (c)есть. Я знаю, что это уже было сделано, но я не могу это найти.

решение1

Вот вариант использования определенной \newitemкоманды. Содержимое задается в , \parboxкоторое естественным образом течет слева направо, предоставляя перечисление в нужном вам стиле:

введите описание изображения здесь

\documentclass{article}
\usepackage{amsmath,amssymb}% http://ctan.org/pkg/{amsmath,amssymb}
\usepackage{enumitem,multicol,setspace}% http://ctan.org/pkg/{enumitem,multicol,setspace}
\newcounter{subenum}[enumi]
\renewcommand{\thesubenum}{\alph{subenum}}
\newcommand{\newitem}[1]{%
  \refstepcounter{subenum}%
  \parbox{\dimexpr.5\linewidth-.5\columnsep}{%
    \makebox[\labelwidth][r]{(\thesubenum)\hspace*{\labelsep}}%
    #1}\hfill%
}
\begin{document}
\begin{enumerate}[start=8]
  \item Evaluate each of the following if $x$ is a non-zero real number.
    \begin{multicols}{2}
      \begin{enumerate}[itemsep=1cm]% The item sep is my choice here.
        \item $\dfrac{|x|}{x}$
        \item $\dfrac{x}{|x|}$
        \item $\dfrac{|-x|}{-x}$
        \item $|x|-|-x|$
      \end{enumerate} 
    \end{multicols}
  \item Evaluate each of the following if $x$ is a non-zero real number.\par
    \setstretch{3}%
    \newitem{$\dfrac{|x|}{x}$}
    \newitem{$\dfrac{x}{|x|}$}
    \newitem{$\dfrac{|-x|}{-x}$}
    \newitem{$|x|-|-x|$}
\end{enumerate}
\end{document}

Учет интервалов осуществляетсяsetspaceи может быть изменен (также \topsepпри необходимости удалены некоторые дополнительные пробелы " ").


Для более автоматизированного подхода к изменению количества столбцов добавьте

\usepackage[nomessages]{fp}% http://ctan.org/pkg/fp

в преамбулу вашего документа и используйте

\FPeval\thecolwidth{round(1/4:4)}% Specify number of columns -> column width
\newcommand{\newitem}[1]{%
  \refstepcounter{subenum}%
  \parbox{\dimexpr\thecolwidth\linewidth-.5\columnsep}{%
    \makebox[\labelwidth][r]{(\thesubenum)\hspace*{\labelsep}}%
    #1}\hfill%
}

как ваше определение для \newitem. Измените 1/4на , 1/<col nums>чтобы увеличить количество столбцов.

решение2

введите описание изображения здесь

\documentclass{article}
\usepackage{amsmath,amssymb}
%\tracingall
\def\horizlist#1#2#3{%
  \setcounter{enumi}{0}%
  #3%
  \flushleft
  \dimen0 \linewidth
  \divide\dimen0 by #1\relax
  \advance\dimen0 -#2\relax
  \def\item{\hfil\egroup\penalty50 \hfill
  \refstepcounter{enumi}%
  \leavevmode\hbox to \dimen0 \bgroup\space(\theenumi)\space}%
  \leavevmode\bgroup\hskip 0pt plus -1fill }

\def\endhorizlist{\hfil\egroup\endflushleft}

\begin{document}
\begin{enumerate}
\item Evaluate each of the following if $x$ is a non-zero real number.
    \begin{horizlist}{2}{1cm}{\renewcommand\theenumi{\alph{enumi}}}
    \item $\dfrac{|x|}{x}$
    \item $\dfrac{x}{|x|}$
    \item $\dfrac{|-x|}{-x}$
    \item $|x|-|-x|$
    \end{horizlist}
\end{enumerate}
\end{document}

Чтобы увидеть, что здесь происходит, если вы хотите, чтобы нумерация шла справа налево, а затем вниз, то это обычный порядок слов в абзаце, поэтому нужно просто создать ряд блоков фиксированной ширины. Если они, скажем, составляют 1/3 ширины текста, и вы создаете абзац из таких блоков в абзаце, выровненном по левому краю, то Tex естественным образом разместит абзац в трех блоках на строке, и они будут выровнены по вертикали, поскольку все они имеют одинаковую ширину. Остальная часть кода просто увеличивает счетчик и помещает (\the...) в начало блока, а также скрывает синтаксис, \makebox[0.3\textwidth]{...}чтобы использовать стандартный \itemсинтаксис, чтобы было легко переключаться между типами списков.

Другими словами, сравните со следующим кодом, который является тем же самым, за исключением косметических изменений синтаксиса.

введите описание изображения здесь

\documentclass{article}

\begin{document}
\begin{flushleft}

\makebox[.3\textwidth][l]{one one}
\makebox[.3\textwidth][l]{two 2 two 2 two}
\makebox[.3\textwidth][l]{three three 3}
\makebox[.3\textwidth][l]{4 4 4 4 4 }
\makebox[.3\textwidth][l]{fifth box}
\makebox[.3\textwidth][l]{number 6}
\makebox[.3\textwidth][l]{7 7 7 7 }
\makebox[.3\textwidth][l]{eight}
\makebox[.3\textwidth][l]{nine nine}
\makebox[.3\textwidth][l]{10}

\end{flushleft}
\end{document}

Несмотря на то, что результат выглядит как текст в три колонки, это всего лишь набранный абзац с автоматическим выравниванием, поскольку каждое «слово» в абзаце представляет собой рамку одинакового размера.

решение3

Это легко сexsheetsпакет иtasksПакет. Следующий пример, надеюсь, говорит сам за себя:

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage{mathtools}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}

\usepackage{exsheets}% loads the `tasks' package
\SetupExSheets{
  headings = runin-nr
}
\settasks{
  counter-format = tsk[a]. ,
  label-format = \sffamily\itshape\bfseries
}

\setcounter{question}{43}% only for this example

\begin{document}

\begin{question}
  Evaluate each of the following if $x$ is a non-zero real number.
  \begin{tasks}(2)
    \task $\dfrac{\abs{x}}{x}$
    \task $\dfrac{x}{\abs{x}}$
    \task $\dfrac{\abs{-x}}{-x}$
    \task $\abs{x}-\abs{-x}$
  \end{tasks}
\end{question}

\end{document}

введите описание изображения здесь

решение4

Вот скучный вариант, который использует resumeфункциональностьenumitempackage. Это не самый эффективный вариант, так как запуск кода enumerateслишком сильно останавливает среду. Но визуально результат приемлем. Вы можете вводить всевозможные дополнительные настройки, так как это просто табличная среда.

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{enumitem}
\newcommand{\Choices}[4]{\begin{tabular}{p{0.5\textwidth} p{0.5\textwidth}} 
\begin{enumerate*}[series=lafter]
    \item #1
\end{enumerate*} &%
\begin{enumerate*}[resume=lafter]
    \item #2
\end{enumerate*} \\[2\baselineskip]
\begin{enumerate*}[resume=lafter]
    \item #3
\end{enumerate*} &%
\begin{enumerate*}[resume=lafter]
    \item #4
\end{enumerate*}
\end{tabular}}

\begin{document}
\begin{enumerate}
\item Evaluate each of the following if $x$ is a non-zero real number.

\Choices{$\dfrac{|x|}{x}$}{$\dfrac{x}{|x|}$}{$\dfrac{|-x|}{-x}$}{$|x|-|-x|$}

\item Evaluate each of the following if you can.

\Choices{This question is not answerable (is that a real word?)}
{This question does not have any correct answer}
{$\int_0^\pi{\tan\sqrt\theta d\theta}$}
{Whatever is a valid answer!}
\end{enumerate}
\end{document}

введите описание изображения здесь

Связанный контент