Я пытаюсь реализовать нумерацию абзацев с помощью memoir
. Я хотел бы, чтобы номера были
- на внешнем поле,
- вплотную к текстовому блоку и
- вертикально выровнен по первой строке абзаца.
Объединив различные фрагменты кода, которые я нашел здесь, на Stack Exchange, я получил
\documentclass[12pt]{memoir}
\pagestyle{empty}
\usepackage{lipsum}
\strictpagecheck
\newcounter{PN}
\marginparmargin{outer}
%% ATTEMPT A
\newcommand{\pnum}{\addtocounter{PN}{1}\marginpar{\mpjustification\arabic{PN}}}
%% ATTEMPT B
%\newcommand{\pnum}{\addtocounter{PN}{1}\hspace{0pt}\marginpar{\mpjustification\arabic{PN}}}
\begin{document}
\pnum\lipsum[\value{PN}]
\pnum\lipsum[\value{PN}]
\end{document}
Обе попытки A и B близки. Но попытка A ставит слишком большие числа, так что они находятся между последней строкой предыдущего абзаца и первой строкой текущего абзаца, в то время как попытка B ставит слишком маленькие числа, так что они находятся между первой и второй строками текущего абзаца.
Мы ценим любые предложения.
EDIT: Мой ответ на ответы
Предложения Майка Ренфро и Гонсало Медины были полезны (и я отметил их как таковые). В моем реальном документе я меняю стиль названий глав, и это по какой-то причине приводит к смещению номеров абзацев на первой странице каждой главы. (Если я не применяю пользовательский стиль главы, эта проблема исчезает.) В конечном итоге я выбрал ответ Майка, потому что в нем этой проблемы нет. Спасибо вам обоим (и lockstep). Кроме того, я не знал об этой команде \stepcounter
; она более элегантна.
решение1
Работая с ответом Гонсало, но используя memoir
встроенные возможности заметок на полях (см. раздел 12.3memoir
руководство):
\documentclass[12pt]{memoir}
\pagestyle{empty}
\usepackage{lipsum}
\newcounter{PN}
\sideparmargin{outer}
\newcommand\pnum{%
\stepcounter{PN}\sidepar{\arabic{PN}}}
\begin{document}
\pnum\lipsum[\value{PN}]
\pnum\lipsum[\value{PN}]
\end{document}
решение2
Возможно, используя \marginnote
изmarginnote
упаковка?
\documentclass[12pt]{memoir}
\pagestyle{empty}
\usepackage{marginnote}
\usepackage{lipsum}
\strictpagecheck
\newcounter{PN}
\marginparmargin{outer}
\newcommand\pnum{%
\stepcounter{PN}\marginnote{\mpjustification\arabic{PN}}}
\begin{document}
\pnum\lipsum[\value{PN}]
\pnum\lipsum[\value{PN}]
\end{document}
Если вам нужно что-то автоматическое (до определенной степени), вы можете использовать \everypar
:
\documentclass[12pt]{memoir}
\usepackage{lipsum}
\newcounter{PN}
\marginparmargin{outer}
\reversemarginpar
\newcommand\countpar{%
\everypar{\stepcounter{PN}\marginpar{\arabic{PN}}}%
}
\newcommand\mcountpar{%
\stepcounter{PN}\marginpar{\arabic{PN}}%
}
\pagestyle{empty}
\begin{document}
\countpar
\lipsum[1-2]
\begin{enumerate}
\item \mbox{}\mcountpar\lipsum[2]
\end{enumerate}
\end{document}
\stepcounter{PN}
можно изменить на , \refstepcounter{PN}
если нужно сделать перекрестные ссылки на абзацы (Спасибосинхронноза указание на это).