背景

背景

背景

我创建了一个带有名称的宏\an,以便在alignat环境中写入单行和多行注释(参见下面的示例)

\documentclass{article}

\usepackage{amsmath, stackengine, lipsum}

\setstackEOL{\\}

\newcommand\an[1]{%
\scantokens{&\hspace{10px}& {\tiny \Longstack[l]{(#1)}}}
}

\begin{document}
\begin{alignat*}{2}
x &= 0 \an{a}
\\ &= 0 + 0 + 0 \an{\lipsum[1][1] \\ \lipsum[2][1]}
\end{alignat*}
\end{document}[

A

问题

我有时需要在这些注释中写长段文字,这使得每当到达页面末尾时我都会插入换行符。否则,就会发生以下情况

A

当前的解决方法是在我想要换行符的地方手动插入换行符,但这是一项重复性任务,我认为可以通过使用变量的值来实现自动化\textwidth

问题

所以,我的问题是:如何让\an宏在传递的参数达到该值时插入换行符\textwidth

答案1

这可行。但是,需要编译文档两次才能正确设置换行符。

\documentclass{article}

\usepackage{amsmath, linegoal, lipsum}
\usepackage[showframe, margin=5cm]{geometry}

\newcommand\an[1]{&\hspace{10px}&\parbox[t]{\linegoal}{\tiny (#1)}}

\begin{document}

\lipsum[1][1-4]

\begin{alignat*}{2}
x &= 0 \an{a} 
\\ &= 0 + 0 \an{\lipsum[1][1-2]}
\\ &= 0 + 0 + 0 \an{\lipsum[1][1-3]}
\\ &= 0 + 0 + 0 + 0 \an{\lipsum[1][1-4]}
\end{alignat*}
\end{document}

在此处输入图片描述

相关内容