答案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
后续项目中)。\lastitem
modusponens
使用一些技巧,你可以避免\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)]
。