代码
\documentclass{article}
\usepackage[body={20em,100ex}]{geometry}
\newcommand{\abc}{\rule{0.95em}{1ex}\kern.05em\allowbreak}
\newcommand{\abcd}{\abc\abc\abc\abc\abc}
\newcommand{\abcde}{\abcd\abcd\abcd\abcd\abcd}
\begin{document}
\noindent\abcde
\begin{list}{$\bullet$}{%
\setlength{\labelwidth}{1em}%
\setlength{\labelsep}{1em}%
\setlength{\leftmargin}{2em}%
\setlength{\itemindent}{2em}}
\item\abcde
\item
\begin{list}{\ddag}{%
\setlength{\labelsep}{1em}%
\setlength{\labelwidth}{1em}%
\setlength{\leftmargin}{1em}%
\setlength{\itemindent}{1em}}
\item\abcde
\item\abcde
\end{list}
\end{list}
\end{document}
得到左侧:
我怎样才能得到正确的一面?
答案1
如果您可以将内部列表放在小页面中(因此与分页符不兼容),则无需太多摆弄即可实现您想要的目标。而且,只需稍加摆弄就可以做到这一点,而不受无分页符的限制。第一种方法:
\documentclass{article}
\usepackage[body={20em,100ex}]{geometry}
\newcommand{\abc}{\makebox[1em][l]{\rule{.9em}{1ex}}\allowbreak}
\newcommand{\abcd}{\abc\abc\abc\abc\abc}
\newcommand{\abcde}{\abcd\abcd\abcd\abcd\abcd}
\begin{document}
\noindent\abcde\par
%% testing the \abc building block: 20 times 1em = 20em
%% \noindent\rule{\linewidth}{1ex}\par
%% \noindent------------------------------------%
%% -----------------------------------\par
\begin{list}{$\bullet$}{%
\setlength{\labelwidth}{1em}%
\setlength{\labelsep}{1em}%
\setlength{\leftmargin}{2em}%
\setlength{\itemindent}{2em}}
\item \abcde\par\abcde
\item\begin{minipage}[t]{\dimexpr\linewidth-\itemindent}
\begin{list}{\ddag}{%
\setlength{\labelsep}{1em}%
\setlength{\labelwidth}{1em}%
\setlength{\leftmargin}{0em}% note the 0em here and the stuff below
\setlength{\itemindent}{\dimexpr\labelsep+\labelwidth}}
\item\abcde\par\abcde
\item\abcde
\end{list}
\end{minipage}
\item hello
\end{list}
\end{document}
请注意我是如何修改你的\abc
宏的。因为,正如我在另一个场合遇到的,并且不明白为什么,\kern.05em\allowbreak
来自你原始代码的会导致一个框过多,进入右边距。而我这里的方法没有。无论如何,此代码产生:
第二种方法是:
\documentclass{article}
\usepackage[body={20em,100ex}]{geometry}
\newcommand{\abc}{\makebox[1em][l]{\rule{.9em}{1ex}}\allowbreak}
\newcommand{\abcd}{\abc\abc\abc\abc\abc}
\newcommand{\abcde}{\abcd\abcd\abcd\abcd\abcd}
\begin{document}
\noindent\abcde
\newdimen\mydimen
\begin{list}{$\bullet$}{%
\setlength{\labelwidth}{1em}%
\setlength{\labelsep}{1em}%
\setlength{\leftmargin}{2em}%
\setlength{\itemindent}{2em}}
\item \abcde
\item \setlength{\mydimen}{\itemindent}%
\begin{list}{\ddag}{%
\setlength{\labelsep}{1em}%
\setlength{\labelwidth}{1em}%
\setlength{\leftmargin}{\mydimen}%
\setlength{\itemindent}{\dimexpr\labelsep+\labelwidth}}
\item[]\hskip-\mydimen\hskip-\labelsep\llap{\ddag}\hskip\labelsep
\abcde
\item\abcde
\end{list}
\item hello
\end{list}
\end{document}
答案2
在第一个列表环境中更改\itemindent
为0em
,在第二个列表环境中更改\itemindent
为2em
。