Набираю книгу, в которой в конце каждого параграфа есть список упражнений, озаглавленный "Problems". Сделал это так:
\newcounter{problems}[chapter]
\renewcommand{\theproblems}{\thechapter-\arabic{problems}}
\newenvironment{problems}{\par\noindent\emph{Problems.} \begin{enumerate} \renewcommand{\theenumi}{\theproblems}}{\end{enumerate}}
\newcommand{\problem}{\refstepcounter{problems}\renewcommand{\labelenumi}{\theenumi.}\item}
\newcommand{\problemh}{\refstepcounter{problems}\renewcommand{\labelenumi}{\theenumi*.}\item}
Использование очевидно: открываем окружение problems, внутри используем problem и problemh для задач без и со звездочкой соответственно. Но есть проблемы:
1. Между "Problems." и самим списком задач может появляться разрыв страницы. Размещение \nopagebreak внутри определения окружения problems не помогло.
2. Хочется, чтобы расстояние между "Problems." и предшествующим текстом было более-менее одинаковым, поэтому простая вставка \medskip в определение не прокатывает — если в тексте закончилась теорема, и начались задачи, то промежуток после теоремы приплюсуется.
3. Внутри списка текст выравнивается с сильным отступом во второй и последующей строках. Как избавиться от этого?