如何让编号列表的最后一个元素前面有一个“因此”符号?

如何让编号列表的最后一个元素前面有一个“因此”符号?

在此处输入图片描述

大家好,我想写出一个带有编号前提的论证,其中结论前面有一个因此符号,但结论对应的数字与前面的数字对齐(见附图)。有没有办法在枚举环境中做到这一点?

答案1

除非你想让 LaTeX 找出该项目是否是最后一个,否则你可以这样做

\documentclass{article}
\usepackage{amssymb}
\newcommand{\ThereForeLeft}{\makebox[0pt][r]{$\therefore$\ifnum\value{enumi}<10
\hspace{0.85cm}%
\else
\hspace{1.2cm}%
\fi}}
\begin{document}
\renewcommand{\labelenumi}{(\arabic{enumi})}
\begin{enumerate}
 \item Blah
 \item Blub
 \item\ThereForeLeft Blubber
\end{enumerate}
\end{document}

在此处输入图片描述

答案2

由于\therefore仅在最后一项中使用,因此在该点重新定义宏没有问题。

\documentclass{article}
\usepackage{enumitem,amssymb,etoolbox}
\usepackage{siunitx}

\newlist{modusponens}{enumerate}{1}
\setlist[modusponens]{label=\maybetherefore(\arabic*),ref=(\arabic*)}

\newrobustcmd{\maybetherefore}{}
\newcommand{\lastitem}{\renewrobustcmd\maybetherefore{\makebox[0pt][r]{$\therefore$ }}\item}

\begin{document}

\begin{modusponens}
\item If Halep is \SI{174.7}{cm} and William is \SI{175}{cm}, then William is taller than Halep.
\item Halep is \SI{174.7}{cm} and William is \SI{175}{cm}.
\lasttitem William is taller than Halep.
\end{modusponens}

\end{document}

重新定义将在 处消失\end{modusponens},因此\therefore在下一个环境中的项目前面将不会出现任何内容(它会出现在同一环境中的modusponens后续项目中)。\lastitemmodusponens

在此处输入图片描述

使用一些技巧,你可以避免\lastitem

\documentclass{article}
\usepackage{enumitem,amssymb,etoolbox,refcount}
\usepackage{siunitx}

\newlist{modusponens}{enumerate}{1}
\setlist[modusponens]{
  label=\maybetherefore(\arabic*),
  ref=\arabic*,
  before=\stepcounter{modusponens},
  after=\addtocounter{modusponensi}{-1}\refstepcounter{modusponensi}\label{\themodusponens},
}
\newcounter{modusponens}

\makeatletter
\newrobustcmd{\maybetherefore}{%
  \edef\temp{\getrefnumber{\themodusponens}}%
  \edef\temp{\expandafter\@firstofone\temp}%
  \ifnum\temp=\value{modusponensi}%
    \makebox[0pt][r]{$\therefore$ }%
  \fi
}

\begin{document}

\begin{modusponens}
\item If Halep is \SI{174.7}{cm} and William is \SI{175}{cm}, then William is taller than Halep.
\item Halep is \SI{174.7}{cm} and William is \SI{175}{cm}.
\item William is taller than Halep.
\end{modusponens}

\end{document}

在环境结束时,我们发出一个\label将引用最后一个项目编号的命令。现在\maybetherefore检查项目编号是否与最后一个相匹配。

modusponens如果添加了其他环境,这可能需要运行两次 LaTeX 。

如果有总是三项,就简单多了:

\documentclass{article}
\usepackage{enumitem,amssymb,etoolbox}
\usepackage{siunitx}

\newlist{modusponens}{enumerate}{1}
\setlist[modusponens]{
  label=\maybetherefore(\arabic*),
  ref=\arabic*,
}

\makeatletter
\newrobustcmd{\maybetherefore}{%
  \ifnum 3=\value{modusponensi}%
    \makebox[0pt][r]{$\therefore$ }%
  \fi
}

\begin{document}

\begin{modusponens}
\item If Halep is \SI{174.7}{cm} and William is \SI{175}{cm}, then William is taller than Halep.
\item Halep is \SI{174.7}{cm} and William is \SI{175}{cm}.
\item William is taller than Halep.
\end{modusponens}

\end{document}

答案3

(手工)尝试 \item[\llap{$\therefore$\ }(3)]

相关内容