Более структурированный способ ввода наборов в LaTeX

8

Я набираю некоторые задания с базовой структурой

Проблема номер проблемы

Решение

и я не очень доволен источником LaTeX, который я создаю. Например

\section*{Problem 1}
In order to solve $a^2+b^2 = c^2$ ...

Это решение не очень хорошее, так как оно не использует автоматические счетчики, и, хотя задания короткие, я мог бы иметь более длинные позже и нуждаться в оглавлении.

Теперь проблемы в моем контексте являются логическими разделами моих документов, и поэтому \ section имеет смысл. Будет ли какой-то тип новой команды сказать \ проблема имеет больше смысла?

пламя
источник
2
Вы найдете больше вопросов и ответов LaTeX по переполнению стека, чем у суперпользователя: stackoverflow.com/questions/tagged/latex . См. Мета вопросы meta.stackexchange.com/questions/7135/… и meta.stackexchange.com/questions/12918/… для обсуждения того, где такие вопросы являются наиболее подходящими.
dmckee --- котенок экс-модератора
В Stack Overflow это было неуместно, так как это было более математическое домашнее задание, а LaTeX не очень программный.
Пламя
1
Это не совсем понятно, но, похоже, на SO больше LaTeXers, чем на SU, вот и все ...
dmckee --- котенок экс-модератора

Ответы:

3

Я нашел этот пример. Это не совсем то, что вы хотите, но если вы посмотрите с помощью счетчиков и определений новой и новой команд, вы сможете сделать именно то, что вы хотите, что мне было не совсем понятно.

\documentclass{article}
\begin{document}

\newcounter{set}
\setcounter{set}{2}
\newcounter{problem}[set]

\newcommand{\problem}{\refstepcounter{problem}{\vspace{2\baselineskip}\noindent\large \bfseries Problem~\arabic{set}.\arabic{problem}}\\}

\problem
\textit{Sum-product algorithm:}  Consider the sum-product\ldots.

\problem
\textit{Max-marginals:} Consider the max-marginals\ldots.

\stepcounter{problem}
\problem
Demonstraction of \verb"\stepcounter"

\addtocounter{problem}{-1}
\problem
Counter increments can be negative!

\end{document}
dlamblin
источник
9

Для этой задачи я использую класс экзаменационных документов. Основной документ тогда выглядит так:

\documentclass[answers]{exam}
\begin{document}
\firstpageheader{}{}{\bf\large Name \\ Class \\ Assignment \\ Due Date}
\runningheader{Name}{Class Assignment}{Due Date}

\begin{questions}
\question
    This is the question.

\begin{solution}
    This is the solution to the question.
\end{solution}

\end{questions}
\end{document}

До открытия экзаменационного класса я использовал документный класс hmcpset из математического факультета колледжа Харви Мадда.

las3rjock
источник
1

Я бы предложил использовать перечисление для организации проблем и использовать разделы для их группировки. Например:

\begin{enumerate}
\item
The ``enumerate'' environment numbers the list elements, like this.

Items in a list can contain multiple paragraphs.
These paragraphs are appropriately spaced and indented according to their
position in the list.
  \begin{itemize}
  \item The ``itemize'' environment sets off list items with ``bullets'',
like this. Finally, the ``description'' environment lets you put your own
    \begin{description}
    \item[A] label on each item, like this ``A''.
    \item[If the label is long,] the first line of the item text will
be spaced over to the right as needed.
    \end{description} 
\end{enumerate}

Взято из pangea.stanford.edu LaTeX по примеру

Делать это дает вам способ больше гибкости структурирования детали ваших индивидуальных заданий - например , вы можете перечислить так глубоко , как вам нужно, но может принимать только разделы 3 -х уровней.

DaveParillo
источник
1

Для такого рода вещей я бы, вероятно, использовал theoremпакет. Используя его, вы можете определить теоремоподобную среду следующим образом:

\newtheorem{problem}{Problem}[chapter]

Здесь необязательный аргумент [chapter]говорит, что нумерация должна выполняться для каждой главы, поэтому вы получаете нумерацию как 1.1, 1.2 в первой главе, 2.1 во второй главе и так далее. Если вы просто хотите использовать последовательную нумерацию по всему документу, вообще не используйте этот аргумент.

И вы бы использовали это так:

\begin{problem}\label{prob:1}
  ... text here
\end{problem}

Конечно, вы хотели бы дать ему более описательный ярлык, чем просто prob:1.

Кроме того, при наборе текста по умолчанию текст выделяется курсивом. Вы можете изменить это, заменив определение чем-то вроде

{\theorembodyfont{\rmfamily}\newtheorem{problem}{Problem}[chapter]}

Я включил изменение шрифта {}так, чтобы оно влияло только на это определение среды, а не на любое другое, которое у вас может быть.

JK.
источник
Я имел обыкновение делать это; затем я обнаружил классы документов, предназначенные для этой задачи.
las3rjock
0

Один из способов сделать это - использовать уравнение среды:

\begin{equation}
\label{myeq}
a^2 + b^2 = c^2
\end{equation}

In order to solve \eqref{myeq} ...

Это дает вам пронумерованные уравнения и способ ссылаться на них.

legoscia
источник