\documentclass{article}
\usepackage{amsmath,enumerate}
\usepackage{kantlipsum}
\makeatletter
\newlength\dottedlinefillheight
\setlength\dottedlinefillheight{.3in}
\def\fillwithdottedlines{%
\begingroup
\ifhmode
\par
\fi
\hrule height \z@
\nobreak
\setbox0=\hbox to \hsize{\hskip \@totalleftmargin
\vrule height \dottedlinefillheight depth \z@ width \z@
\dotfill}%
\cleaders \copy0 \vfill \hbox{}%
\endgroup
}
\makeatother
\begin{document}
\begin{enumerate}[Q1.]
\item test
\begin{enumerate}[(a)]
\item test test
\fillwithdottedlines
\item test test
\fillwithdottedlines
\end{enumerate}
\item
\begin{enumerate}[(a)]
\item test
\begin{enumerate}[(i)]
\item test
\fillwithdottedlines
\item test
\fillwithdottedlines
\item test
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{document}
这\fillwithdottedlines
是从该论坛的另一篇帖子复制而来的。
我怎样才能忽略缩进,以便行始终是文本宽度?
我认为这与之有关\@totalleftmargin
,并且我尝试使用它\leftmargin
,但结果似乎不太好。
使用结果\leftmargin
如下:
1 – 它们没有对齐。2 – 仍然有一些缩进。
还有其他建议吗?
答案1
您明确添加了空格,只需删除(或像这里一样将其注释掉)
\documentclass{article}
\usepackage{amsmath,enumerate}
\usepackage{kantlipsum}
\makeatletter
\newlength\dottedlinefillheight
\setlength\dottedlinefillheight{.3in}
\def\fillwithdottedlines{%
\begingroup
\ifhmode
\par
\fi
\hrule height \z@
\nobreak
\setbox0=\hbox to \hsize{%\hskip \@totalleftmargin
\vrule height \dottedlinefillheight depth \z@ width \z@
\dotfill}%
\cleaders \copy0 \vfill \hbox{}%
\endgroup
}
\makeatother
\begin{document}
\begin{enumerate}[Q1.]
\item test
\begin{enumerate}[(a)]
\item test test
\fillwithdottedlines
\item test test
\fillwithdottedlines
\end{enumerate}
\item
\begin{enumerate}[(a)]
\item test
\begin{enumerate}[(i)]
\item test
\fillwithdottedlines
\item test
\fillwithdottedlines
\item test
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{document}
答案2
使用enumitem
包代替enumerate
,并使用wide
选项进行第二级和第三级枚举:
\documentclass{article}
\usepackage{amsmath}
\usepackage[shortlabels]{enumitem}
\usepackage{kantlipsum}
\makeatletter
\newlength\dottedlinefillheight
\setlength\dottedlinefillheight{.3in}
\def\fillwithdottedlines{%
\begingroup
\ifhmode
\par
\fi
\hrule height \z@
\nobreak
\setbox0=\hbox to \hsize{\hskip \@totalleftmargin
\vrule height \dottedlinefillheight depth \z@ width \z@
\dotfill}%
\cleaders \copy0 \vfill \hbox{}%
\endgroup
}
\makeatother
\begin{document}
\begin{enumerate}[Q1.]
\item test
\begin{enumerate}[(a)]
\item test test
\fillwithdottedlines
\item test test
\fillwithdottedlines
\end{enumerate}
\item
\begin{enumerate}[(a)]
\item test
\begin{enumerate}[(i),wide = 0pt]
\item test
\fillwithdottedlines
\item test
\fillwithdottedlines
\item test
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{document}
要使虚线具有完整文本宽度,请使用以下代码:
\begin{enumerate}[Q1., wide = 0pt]
\item test
\begin{enumerate}[(a), wide]
\item test test
\fillwithdottedlines
\item test test
\fillwithdottedlines
\end{enumerate}
\item
\begin{enumerate}[(a)]
\item test
\begin{enumerate}[(i),wide, leftmargin =\dimexpr-\leftmargini + \labelsep-\fontdimen2\font]
\item test
\fillwithdottedlines
\item test
\fillwithdottedlines
\item test
\end{enumerate}
\end{enumerate}
\end{enumerate}