我想要一个命令,将另一个命令应用于输入的每一行。我的方法是以下简单的字符串替换:
\documentclass{article}
\usepackage{xstring,xparse}
\DeclareDocumentCommand{\applySomeFormatting}{o}
{
This line (#1) has been formatted successfully.
}
\DeclareDocumentCommand{\applySomeFormattingToEachLine}{m}
{
\noexpandarg
\StrSubstitute{\applySomeFormatting[#1]}{\\}{]\\\applySomeFormatting[}
}
\begin{document}
\applySomeFormattingToEachLine{First line\\Second line\\Third line}
\end{document}
这基本上是可行的,除非其中一行有多行数学环境,因为该命令不能应用于数学环境内的行。有人知道如何将这些数学环境排除在替换之外吗?
答案1
{}
您可以在数学周围添加一对,这可以防止\\
被字符串替换所取代。
然而,我不太确定这是否确实是您想要的。
\documentclass{article}
\usepackage{mathtools}
\usepackage{xstring,xparse}
\DeclareDocumentCommand{\applySomeFormatting}{o}
{
This line (#1) has been formatted successfully.
}
\DeclareDocumentCommand{\applySomeFormattingToEachLine}{m}
{
\noexpandarg
\StrSubstitute{\applySomeFormatting[#1]}{\\}{]\\\applySomeFormatting[}
}
\begin{document}
\applySomeFormattingToEachLine{First line\\Second line\\Third line}
\bigskip
My attempt:
\applySomeFormattingToEachLine{Introduce some math:%
{\begin{align}
1+2=3\\
3+4=7
\end{align}}\\ pure text }
\end{document}