所以我有下面这个用户定义函数。这给了我接近最佳的结果。代码应该制作编号的子节。其余文本在下面对齐。由于这些子节通常只跨越 1-3 行,所以看起来不错。
\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3.5cm,vmargin=2cm]{geometry}
\usepackage{lipsum}
\newcounter{problem}
\setcounter{problem}{0}
\newcounter{navn}[problem]
\renewcommand{\thenavn}{\alph{navn}}
\newcommand{\navn}{ \stepcounter{navn} \hspace{ -0.12cm} \bfseries \thenavn) }
\setcounter{navn}{0}
\newcommand{\NR}[1]
{ \vspace{5mm} \begin{minipage}[t]{0.051 \textwidth}
\navn \hspace{0pt}
\end{minipage}
\begin{minipage}[t]{0.949\textwidth}
#1
\end{minipage}
\vspace{-0.3cm}
\addcontentsline{toc}{subsubsection}{\textnormal{ \thenavn })}
}
\newcommand{\UR}[1]
{ \begin{minipage}[t]{0.051 \textwidth}
\hspace{0pt}
\end{minipage}
\begin{minipage}[t]{0.949\textwidth}
#1
\end{minipage}\vspace*{-0.4cm}
}
\setlength{\parindent}{0in}
\begin{document}
\NR{\lipsum[1]}
{\lipsum[5]}
\UR{\lipsum[2]}
\NR{Hello}
\[ x^2 + 3x + 4 \]
\NR{Problems}
\NR{Problems}
\lipsum[3]
\end{document}
现在,编译此代码后,可以清楚地看到命令下方的文本\NR
越来越接近实际文本。当然,这是由命令内部的负间距引起的。但是,此代码是必需的,否则命令\NR
和后面的图像之间的间距会太大。此外,函数的间距也会增加太多。
在代码中还可以看到,命令的长度是默认设置的。
我的 MWE 中 c) 和 e) 之间的间距非常完美。我知道我可以用来\\
增加间距,但这很繁琐,而且违背了 Latex 的精神。
我现在的问题是如何正确定义间距?更具体地说:
我如何定义小页面应始终从页面宽度开始,并带有默认缩进?
如何正确定义命令前后的水平空间?(这样它与 MWE 中的相同,但也解决了正常的文本问题)
答案1
如果你不想使用枚举项,这是您的宏的改进版本:
\newcounter{navn}[problem]
\renewcommand{\thenavn}{\alph{navn}}
\newcommand{\navn}{\stepcounter{navn}\bfseries\thenavn)}
\setcounter{navn}{0}
\newcommand{\NR}[1]{%
\par\addvspace{5mm}\noindent\makebox[0.05\textwidth][l]{\navn}%
\begin{minipage}[t]{0.95\textwidth}
#1\par\xdef\tpd{\the\prevdepth}
\addcontentsline{toc}{subsubsection}{\textnormal{ \thenavn })}%
\end{minipage}\par\prevdepth\tpd
%\addvspace{0.3cm}
}
\newcommand{\UR}[1]{%
\noindent\makebox[0.05\textwidth][l]{}%
\begin{minipage}[t]{0.95\textwidth}
#1\par\xdef\tpd{\the\prevdepth}
\end{minipage}\par\prevdepth\tpd
%\addvspace{0.3cm}
}
如果要确保 minipages 之后的最小间距,请取消注释这两行。有关技巧\prevdepth
,请参阅如何在使用 minipages (或 \parboxes) 时保持恒定的 baselineskip?
答案2
我建议您使用包enumerate
中的选项enumitem
。对于不需要缩进的文本,您可以结束并在重新启动时enumerate
使用该选项:resume
基本解决方案:
\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3.5cm,vmargin=2cm]{geometry}
\usepackage{enumitem}
\usepackage{lipsum}
\setlength{\parindent}{0in}
\begin{document}
\begin{enumerate}[label=\textbf{\alph*}),labelsep=1.5em]
\item \lipsum[1]
\end{enumerate}
\lipsum[5]
\lipsum[2]
\begin{enumerate}[resume,label=\textbf{\alph*}),labelsep=1.5em]
\item Hello
\[ x^2 + 3x + 4 \]
\item Problems
\item Problems
\end{enumerate}
\lipsum[3]
\end{document}
更新的解决方案:
如果经常需要退出/恢复枚举环境,您可以将其包装到宏中:
\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3.5cm,vmargin=2cm]{geometry}
\usepackage{enumitem}
\usepackage{lipsum}
\setlength{\parindent}{0in}
\newcommand{\PauseList}[1]{%
\end{enumerate}
#1
\begin{enumerate}[resume,label=\textbf{\alph*}),labelsep=1.5em]
}%
\begin{document}
\begin{enumerate}[label=\textbf{\alph*}),labelsep=1.5em]
\item \lipsum[1]
\PauseList{
\lipsum[5]
}
\item Hello
\[ x^2 + 3x + 4 \]
\item Problems
\item Problems
\end{enumerate}
\lipsum[3]
\end{document}