恢复枚举计数器

恢复枚举计数器

我在页边距中包含了一个枚举。我能够让它工作,但注意到两个问题。首先,我试图对齐文本。目前,它在左侧对齐,但在右侧不对齐。其次,我希望页边距枚举在适当的位置分页。可以做到这一点吗?

下面是我的 MWE(请注意,应该有一个分页符,以便跨越 2 页,而不是 1 页。并请注意,文本的右侧未对齐):

\documentclass[12pt,english,nohyper]{tufte-handout}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage[space]{grffile}
\usepackage{geometry}
\usepackage{pgffor}
\usepackage{caption}
\usepackage{calc}
\usepackage{enumitem}
\usepackage[english]{babel}
\usepackage{blindtext}

\makeatletter
\makeatother

\begin{document}
\SweaveOpts{concordance=TRUE}

\marginpar{
\noindent
\begin{minipage}{53mm}
\vspace{7mm}
\underline{Here is the list:}
\vspace{0.5mm}
\footnotesize

\begin{enumerate}[label=\Alph*.,itemsep=-1ex,leftmargin=*]
\item \blindtext[1]
\item \blindtext[1]
\item \blindtext[1]
\item \blindtext[1]
\end{enumerate}
\end{minipage}
}

\end{document}

我想重申一下,我希望保持目前的左对齐。(枚举 ABCD 都比其余文本稍微靠左一些,其余文本对齐整齐)。感谢您的任何建议。

更新:Heiko Oberdiek 帮助我进行了论证。谢谢,它确实有效。下面是我更新后的代码。但是,现在有两个小问题。首先,第二组枚举从 A. 开始(而不是 D.)。有没有办法将其设置为除 A. 之外的某个起始字母?其次,虽然这个 MWE 有效,因为第二组三个枚举出现在第二页(紧接着第一页上的第一组三个枚举),但由于\pagebreak,这在我的实际代码中不会发生(非边距区域有大量信息和图表)。在我的实际文档中,第二组枚举有时会出现在第三页。有没有办法强制第二组枚举出现在第二页上?

另外,我正在创建一个软件,其中非边距区域中的信息将取决于用户输入的内容,因此对于一种情况,我不能简单地移动第二个枚举,直到它出现在第二页上。因为对于另一种情况,情况可能并非如此。这就是为什么我想以某种方式强制它出现在第二页上。

谢谢你!

我的更新代码:

\documentclass[english,nohyper]{tufte-handout}
\usepackage{enumitem}
\usepackage[english]{babel}
\usepackage{blindtext}

\begin{document}
\SweaveOpts{concordance=TRUE}

\marginpar{%
  \noindent
  \vspace{7mm}
  \underline{Here is the list:}
  \vspace{0.5mm}
  \footnotesize

  \justifying
  \begin{enumerate}[label=\Alph*.,itemsep=-\parsep,leftmargin=*]
  \item \blindtext[1]                                
  \item \blindtext[1]
  \item \blindtext[1]
  \end{enumerate}
}

\pagebreak

\marginpar{%
  \noindent
  \footnotesize

  \justifying
  \begin{enumerate}[label=\Alph*.,itemsep=-\parsep,leftmargin=*]
  \item \blindtext[1]                                
  \item \blindtext[1]
  \item \blindtext[1]
  \end{enumerate}
}
\end{document}

答案1

该类tufte-handout提供\justify对齐的文本:

\documentclass[english,nohyper]{tufte-handout}
\usepackage{enumitem}
\usepackage[english]{babel}
\usepackage{blindtext}

\begin{document}

\marginpar{%
  \noindent
  \begin{minipage}{53mm}
  \vspace{7mm}
  \underline{Here is the list:}
  \vspace{0.5mm}
  \footnotesize

  \justifying
  \begin{enumerate}[label=\Alph*.,itemsep=-1ex,leftmargin=*]
  \item \blindtext[1]
  \item \blindtext[1]
  % \item \blindtext[1]
  % \item \blindtext[1]
  \end{enumerate}
  \end{minipage}%
}
\end{document}

结果

Without the `minipage` and with no extra space between entries (`itemsep=-\parsep`):

\documentclass[english,nohyper]{tufte-handout}
\usepackage{enumitem}
\usepackage[english]{babel}
\usepackage{blindtext}

\begin{document}

\marginpar{%
  \noindent
  \vspace{7mm}
  \underline{Here is the list:}
  \vspace{0.5mm}
  \footnotesize

  \justifying
  \begin{enumerate}[label=\Alph*.,itemsep=-\parsep,leftmargin=*]
  \item \blindtext[1]                                
  \item \blindtext[1]
  % \item \blindtext[1]
  % \item \blindtext[1]
  \end{enumerate}
}
\end{document}

第二个问题: \marginpar类似于 LaTeX 的浮动对象,不能跨页面拆分。

恢复枚举计数器

包中enumitem已经提供了选项resume。但是,设置存储在本地,在 之后会丢失\marginpar。因此,下一个示例绕了个小弯。第一次枚举结束后,顶级枚举计数器的当前值enumi存储在全局计数器中marginresume,并为下一次枚举做好准备(\stepcounter)。然后 中的下一个枚举\marginpar使用选项start恢复枚举:

\documentclass[english,nohyper]{tufte-handout}
\usepackage{enumitem}
\usepackage[english]{babel}
\usepackage{blindtext}

\newcounter{marginresume}

\begin{document}
%\SweaveOpts{concordance=TRUE}

\marginpar{%
  \noindent
  \vspace{7mm}
  \underline{Here is the list:}
  \vspace{0.5mm}
  \footnotesize

  \justifying
  \begin{enumerate}[label=\Alph*.,itemsep=-\parsep,leftmargin=*]
  \item \blindtext[1]
  \item \blindtext[1]
  \item \blindtext[1]
  \end{enumerate}%
  \setcounter{marginresume}{\value{enumi}}%
  \stepcounter{marginresume}%
}

\pagebreak

\marginpar{%
  \noindent
  \footnotesize

  \justifying
  \begin{enumerate}[
    label=\Alph*.,
    itemsep=-\parsep,
    leftmargin=*,
    start=\value{marginresume},
  ]
  \item \blindtext[1]
  \item \blindtext[1]
  \item \blindtext[1]
  \end{enumerate}
}
\end{document}

答案2

scrlayer-notecolumn 包可以将“注释列”拆分成多个页面:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{scrlayer-scrpage}

\usepackage{scrlayer-notecolumn}
\usepackage[marginparwidth=5cm,textwidth=10cm,left=2cm]{geometry}
\usepackage{lipsum,enumitem,blindtext}
\DeclareRobustCommand{\mytext}{
\begin{enumerate}[label=\Alph*.,itemsep=-1ex,leftmargin=*]
\item \blindtext[1]
\item \blindtext[1]
\item \blindtext[1]
\item \blindtext[1]
\end{enumerate}}

\begin{document}
\makenote{\mytext}
\lipsum[1-5]
\end{document}

该包相当实验性且脆弱(例如,该\makenote命令不喜欢其参数中的许多命令)。

相关内容