упражнения по отступам

упражнения по отступам

Я печатаю домашние задания и мне нужен очень конкретный формат, но я не уверен, с чего начать. Я хочу, чтобы номера упражнений были выстроены в столбец, а затем вопросы и ответы были бы выровнены по левому краю с другим "столбцом", так сказать. Чтобы понять, что я имею в виду, вот этот простой код работает:

\documentclass{article}

\begin{document}
\begin{tabular}{l l}
    5.  & This is the question          \\
        & This is where the answer goes \\

    11. & Another Questions             \\
        & Another Answer                
\end{tabular}
\end{document}

Похоже на то, что я хочу, но раздражает помещать все мое задание в табличную среду и беспокоиться о символах выравнивания и т. д. Что мне действительно хотелось бы, так это среда, в которой я могу указать номер упражнения, и она создаст правильный макет для вопроса и ответа. Это возможно? Спасибо!

решение1

Есть много способов сделать это. Простой способ, использующий только enumerateсреду

\begin{enumerate}
  \item[5] This is the question.
  \item[] This is where the answer goes
\end{enumerate}

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

\documentclass{article}
\usepackage{calc}

\newcommand{\question}[1]{\item[#1]}
\newcommand{\answer}{\item[]}
\newenvironment{questionandanswer}[2]{\enumerate\setcounter{enumi}{#2-1}\item#1\item[]}{\endenumerate}
\newenvironment{anotherapproach}{\enumerate}{\endenumerate}


\begin{document}

\begin{questionandanswer}{This is the question.}{5}
  This is where the answer goes
\end{questionandanswer}

\begin{anotherapproach}
  \question{5} This is the question.
  \answer This is where the answer goes
\end{anotherapproach}

\begin{enumerate}
  \item[5] This is the question.
  \item[] This is where the answer goes
\end{enumerate}
\end{document}

Если вы хотите изменить отступы среды enumerate, тоenumitemПакет — наиболее разумный способ:

\documentclass{article}
\usepackage{calc}
\usepackage{enumitem}
\setlist[enumerate]{leftmargin=*}

решение2

Вы можете использовать enumerateокружение; необязательный аргумент \itemпозволяет назначить желаемую метку:

\documentclass{article}
\usepackage[nopar]{lipsum}% just to generate text for the example

\begin{document}

\begin{enumerate}
\item This is the question.

And this is where the question goes. \lipsum[2]
\item[11.] This is another question.

And this is where the question goes. \lipsum[4]
\end{enumerate}

\end{document}

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

решение3

Если вы особенно заботитесь о наличии интервала между метками, то следующий код, скопированный из ответа Гонсало и соответствующим образом измененный, на мой взгляд, выглядит хорошо:

\documentclass{article}
\usepackage{enumitem}%provides the key labelsep

\begin{document}

\begin{enumerate}[labelsep=*]
\item[5.] This is the question.

And this is where the question goes. I use \texttt{labelsep}=*
\item[11.] This is another question.

And this is where the question goes. I use \texttt{labelsep}=*
\end{enumerate}

\begin{enumerate}
\item[5.] This is the question.

And this is where the question goes. No \texttt{labelsep}=*
\item[11.] This is another question.

And this is where the question goes. No \texttt{labelsep}=*
\end{enumerate}


\end{document}

Вывод:

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

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