我希望能够在数学 \begin{align*} 模式下制作 \dotfill
这是我的代码
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
& M=E-e \sin E \makebox[5cm]{\dotfill} \tag{1}\\
& A=B+C
\end{align*}
\end{document}
但这不管用。我希望点像旧版印刷一样移动到标签 (1)。我还希望点不会移动方程式。我还希望点自动填充到标签之前的空间。感谢您的帮助
更新 29/10/2022
我现在有一个宏,可以只设置点序列的长度。但我想以自动化的方式完成它。
\newcommand{\jdot}[1]{ \rlap{\makebox[#1]{\dotfill} }}
现在我的 LateX 代码变成了
\documentclass{article}
\usepackage{amsmath}
\newcommand{\jdot}[1]{ \rlap{\makebox[#1]{\dotfill} }}
\begin{document}
\begin{align*}
M&=E-e \sin E \jdot{4.4cm} \tag{1}\\
A&=B+C
\end{align*}
\end{document}
由于 rlap,点序列不会移动方程式,但我仍然需要手动定义序列的长度。挑战是以自动化的方式找到这个长度。
答案1
我从中学到了一个解决方案CTeX-org 论坛经过少许修改,代码如下:
\documentclass{article}
\usepackage{amsmath}
\usepackage{zref-savepos}
\makeatletter
\ExplSyntaxOn
\zref@require@unique
\NewDocumentCommand { \dotstag } { O{} m }
{
\mode_if_math:TF
{ \@@_math_cdotfill:n { (#2) } }
{ \__examzh_cdotfill: (#2) }
\mode_if_math:F
{
\par \noindent \ignorespaces
}
}
% 仿照 latex.ltx, line 651 的 \dotfill
\cs_new:Npn \__examzh_cdotfill:
{
\mode_leave_vertical:
\cleaders \hb@xt@ .44em {\hss $\cdot$ \hss} \hfill
\kern\z@
}
\cs_new_protected:Npn \@@_math_cdotfill:n #1
{
\stepcounter { zref@unique }
\hbox_overlap_right:n
{
\zsaveposx { \thezref@unique L }
\zref@ifrefundefined { \thezref@unique R }
{ }
{
\cleaders
\hbox_to_wd:nn { .44em } { \hss $\cdot$ \hss }
\skip_horizontal:n
{
\zposx { \thezref@unique R } sp
- \zposx { \thezref@unique L } sp
}
}
}
\tag * { \zsaveposx { \thezref@unique R } #1 }
}
\ExplSyntaxOff
\makeatother
\begin{document}
Test with \verb|\dotstag{}|:
\begin{align*}
M & = E - e \sin E \dotstag{1} \\
A & = B + C \dotstag{2}
\end{align*}
\end{document}
注意,你需要编译两次才能得到想要的结果。顺便说一下,这个\dotstag
命令也可以在文本模式下使用!