读取 \@itemdepth 的值时出现问题

读取 \@itemdepth 的值时出现问题

我是 LaTeX 的新用户。我正在尝试格式化一个通用列表。我已经完成了大部分工作。我正在尝试获取的值,\@itemdepth以便确定当前深度使用的缩进量。\@itemdepth当我尝试使用计数器时,我收到引用变量的错误\@itemdepth。我用 1 或 0 等数字替换变量引用,脚本就会运行。所以看起来我在这个引用中做错了什么。如果您能提供任何帮助,我将不胜感激。

脚本的相关部分如下:它按显示的方式运行。当将 #1 替换为 时\@itemdepth。它不起作用。(感谢 Peter 和 Gonzalo 提供的包含此内容的说明。)

\documentclass{article}
\usepackage{amssymb, amsmath} 
\usepackage{ifthen} 

\newlength{\hangparsindent}
\newcounter{hangparsindentedlevel}

\newenvironment{hangpars}[1][1]{
   \ifthenelse {#1 = 1} {
        \setlength {\hangparsindent}{0in}
        }
       {
       \setlength {\hangparsindent}{-\leftmargini}
       }

 \begin{list}{}{
   \setlength{\itemindent}{\hangparsindent}
   \setlength{\listparindent}{\hangparsindent}
   \setlength{\partopsep}{0in} \setlength{\parskip}{0in} \setlength{\topsep}{0in}
   }
  \item{}
}    
{\end{list}} 

\begin{document}

\begin{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. 

\begin{hangpars}[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 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

编译成功了,但不确定这是否满足了你的要求。\makeatletter这里其实不需要,但如果你尝试访问\@itemdepth。请参阅\makeatletter 和 \makeatother 起什么作用?了解更多详情。

我添加了尾随空格%以抑制额外的空格。可能不是所有空格都是必要的,但我从惨痛的经历中吸取了教训,所以将它们包括在内更为安全。参见这个问题作为一个例子,说明如果不以百分比结尾行会发生什么情况

\documentclass{article} 

\usepackage{amssymb, amsmath} 
\usepackage{ifthen} 

\makeatletter% Only needed to access \@itemdepth in here
\newlength{\hangparsindent} 
\newcounter{hangparsindentedlevel} 
%
\newenvironment{hangpars}[1][1]{\ifthenelse {#1 = 1} {%
    \setlength{\hangparsindent}{0in}} {%
    \setlength {\hangparsindent}{-\leftmargini}%
   } \list{}{%
    \setlength{\itemindent}{\hangparsindent}%      
    \setlength{\listparindent}{\hangparsindent}%
    \setlength{\partopsep}{0in} \setlength{\parskip}{0in}% 
    \setlength{\topsep}{0in} } \item{}}%
{\endlist}%
\makeatother

\begin{document} 
\begin{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. 
\begin{hangpars}[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 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} 

相关内容