Я печатаю домашние задания и мне нужен очень конкретный формат, но я не уверен, с чего начать. Я хочу, чтобы номера упражнений были выстроены в столбец, а затем вопросы и ответы были бы выровнены по левому краю с другим "столбцом", так сказать. Чтобы понять, что я имею в виду, вот этот простой код работает:
\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}
Вывод: