我希望能够控制项目的嵌套级别(这样我就可以将文本与嵌套级别更深的文本对齐。)我已经能够读取\@itemdepth
计数器的值。我无法更改它。是否可以\@itemdepth
从我的文件中更改值,如果可以,我该怎么做?或者有更好的方法可以做我想做的事情吗?感谢您提供的任何帮助。
我想要运行的代码示例。我是 LaTeX 新手,代码中可能有几个错误。任何帮助都将不胜感激。
\documentclass{article}
\usepackage{amssymb, amsmath}
\usepackage{ifthen}
\makeatletter % needed to access \@itemdepth
\newcounter{hangparsindentedlevel}
\newenvironment{hangpars}[1][0]{%
\begin{list}{}{%
\setcounter {hangparsindentedlevel}{\@itemdepth}%
\ifthenelse {#1 > 0} { %
\setcounter {\@itemdepth}{#1}%
}%
{%
\relax%
}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\listparindent}{-\leftmargin}%
\setlength{\partopsep}{0in} \setlength{\parskip}{0in} \setlength{\topsep}{0in}%
}%
\item{}%
}%
{\end{list}}%
\makeatother
\begin{document}
\begin{hangpars}[0]
test text 1. test text 1. test text 1. test text 1. test text 1. test text 1. test text 1. test text 1. test text 1. test text 1.
\begin{hangpars}[2]
test text 2. test text 2. test text 2. test text 2. test text 2. test text 2. test text 2. test text 2. test text 2. test text 2.
\end{hangpars}
test text 3. test text 3. test text 3. test text 3. test text 3. test text 3. test text 3. test text 3. test text 3. test text 3.
\end{hangpars}
\end{document}
我希望的输出是,包含测试文本 1 的段落的第一行从最左边开始,并且段落的所有后续行都将缩进一级。
包含测试文本 2 的段落的第一行(带有 hangpars[2])将从左边缘开始缩进两级,并且段落的所有后续行都将缩进三级。最后一段的格式将与第一段相同。
test text 1. test text 1. test text 1. test text 1. test text 1.
test text 1. test text 1. test text 1. test text 1.
test text 1.
test text 2. test text 2. test text 2. test text 2.
test text 2. test text 2. test text 2. test
text 2. test text 2.
test text 3. test text 3. test text 3. test text 3. test text 3.
test text 3. test text 3. test text 3. test text 3.
test text 3.
答案1
如果你只想做这些,最简单的方法是使用列表环境,例如enumitem
包裹。
此环境已内置了更多灵活性,因此除非确实有充分理由构建自己的环境,否则我会尝试看看您是否可以使用现有包来实现目标。这里我hangpars
为您定义了一个新列表,并指定了一些要在列表的每个级别使用的设置。根据需要调整这些设置。以下代码生成:
\documentclass{article}
\usepackage{enumitem}
\newlist{hangpars}{itemize}{5}%
\setlist[hangpars]{label={}}% no labels for all levels
\setlist[hangpars,1]{leftmargin=0cm,itemindent=-0.7cm}%
\setlist[hangpars,2]{leftmargin=2cm,itemindent=-0.7cm}%
\setlist[hangpars,3]{leftmargin=4cm,itemindent=-0.7cm}%
\setlist[hangpars,4]{leftmargin=5cm,itemindent=-0.7cm}%
\begin{document}
\begin{hangpars}
\item test text 1. test text 1. test text 1. test text 1. test text 1.
test text 1. test text 1. test text 1. test text 1.
test text 1.
\begin{hangpars}
\item test text 2. test text 2. test text 2. test text 2.
test text 2. test text 2. test text 2. test
text 2. test text 2.
\end{hangpars}
\end{hangpars}
\begin{hangpars}
\item test text 3. test text 3. test text 3. test text 3. test text 3.
test text 3. test text 3. test text 3. test text 3.
test text 3.
\end{hangpars}
\end{document}