李清大神的方案:https://github.com/CTeX-org/forum/issues/256
可以用 zref-savepos 记录位置,然后手动填充,需要编译两次。
\documentclass{ctexart}
\usepackage[a4paper]{geometry}
\usepackage{amsmath}
\usepackage{zref-savepos}
\makeatletter
\ExplSyntaxOn
\zref@require@unique
\NewDocumentCommand { \score } { O{} m }
{
\mode_if_math:TF
{ \@@_math_cdotfill:n { #2 \text { ~ 分 } } }
{ \__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
问 结合 \tag 实现行间公式的 \dotfill 的方法?