我在页边距中包含了一个枚举。我能够让它工作,但注意到两个问题。首先,我试图对齐文本。目前,它在左侧对齐,但在右侧不对齐。其次,我希望页边距枚举在适当的位置分页。可以做到这一点吗?
下面是我的 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
命令不喜欢其参数中的许多命令)。