背景
我创建了一个带有名称的宏\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}[
问题
我有时需要在这些注释中写长段文字,这使得每当到达页面末尾时我都会插入换行符。否则,就会发生以下情况
当前的解决方法是在我想要换行符的地方手动插入换行符,但这是一项重复性任务,我认为可以通过使用变量的值来实现自动化\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}