refstepcounter 内部描述项目

refstepcounter 内部描述项目

我的目的是创建证明中的可视化步骤。

我根据环境烹饪了这道菜description

\documentclass{article}

\newcounter{subproofcount}
\newcommand{\thesubproffcount}{\arabic{subproofcount}}
\newcommand{\subprooflabel}[1]{\refstepcounter{subproofcount}(\roman{subproofcount}) \underline{\bf #1}}

\newenvironment{subproof}{\let\Olddescriptionlabel\descriptionlabel\let\descriptionlabel\subprooflabel \begin{description}\setcounter{subproofcount}{0}}{\end{description}\let\descriptionlabel\Olddescriptionlabel}



\begin{document}
    Here is a proof.
    \section{Title 1}
    \section{Title 2}
    \begin{subproof}
        \item[\( A\) is open]       \label{ITEMone}
            Let \( \epsilon>0\) etc.
        \item[\( A\) is bounded] 
            Suppose etc. Using \ref{ITEMone}
    \end{subproof}
\end{document}

下列物品的编号正确:

输出

我的问题是\ref{ITEMone}创建了对该部分的引用(即本例中的“2”)而不是对该项目的引用subproof(即示例中的(i))。

编辑:针对我的用例的最佳答案在这里:https://tex.stackexchange.com/a/697316/109167

答案1

这使用了一个新的列表环境。请注意,当使用可选参数时,默认情况下\item不会增加计数器。

唯一剩下的问题是将左边距放在可选参数的左边还是右边。

\documentclass{article}
\usepackage{showframe}% alignment tool

\newcounter{subproofcount}
\renewcommand{\thesubproofcount}{\roman{subproofcount}}
\newcommand{\subprooflabel}[1]{\hbox to \leftmargin{\hfill(\thesubproofcount)\hspace\labelsep}\underline{\bf #1}}
\newcommand{\subproofitem}[1][]{\refstepcounter{subproofcount}\csname @item\endcsname[#1]}

\newenvironment{subproof}{\let\item=\subproofitem
  \list{subproofcount}{\usecounter{subproofcount}\let\makelabel=\subprooflabel}}%
  {\endlist}

\begin{document}
    Here is a proof.
    \section{Title 1}
    \section{Title 2}
    \begin{subproof}
        \item[\( A\) is open]       \label{ITEMone}
            Let \( \epsilon>0\) etc.\\
            Add another line.
        \item[\( A\) is bounded] 
            Suppose etc. Using \ref{ITEMone}
    \end{subproof}
\end{document}

答案2

由于分步证明中的数字(i)、(ii)等至少与相关的描述性标签一样明显,因此我将创建一个定制的枚举环境,并subproof借助枚举项包及其\newlist\setlist。这样,通过\label和进行交叉引用\ref就变得非常简单了。

在此处输入图片描述

\documentclass{article}
\usepackage[normalem]{ulem}  % for \uline macro
\newcommand\descr[1]{{\boldmath\bfseries\uline{#1}}\hphantom{.}}

\usepackage{enumitem}
\newlist{subproof}{enumerate}{1}
\setlist[subproof]{label=(\roman*)}

\begin{document}
\section{Title 1}
\section{Title 2}

\begin{subproof}
    \item \label{ITEMone}
    \descr{\( A\) is open} Let \( \epsilon>0\). Then \dots
    \item 
    \descr{\( A\) is bounded} Using subproof \ref{ITEMone}, we \dots
\end{subproof}
\end{document}

相关内容