我构造了一个宏,用 fromopacity
为文本赋予一个功能。它工作正常,但当第二个参数包含时,会导致 .tex 文件编译失败。为什么以及如何修复它?\pgfsetfillopacity
tikz
\par
\documentclass{article}
\usepackage{geometry,tikz,xparse}
\geometry{showframe}
\NewDocumentCommand{\opacity}{g g}{%
\IfNoValueTF{#2}
{\IfNoValueTF{#1}
{\pgfsetfillopacity{1}}
{\pgfsetfillopacity{#1}}
}%
{\pgfsetfillopacity{#1}#2\pgfsetfillopacity{1}}%
}
\begin{document}
\opacity{0.5}{some text\par some text some text some text some text some text some text some text some text some text \\some text}
\end{document}
答案1
Phelype 建议使用 来{g +g}
解决这个问题,但这种方法实在是太简单了。由于我经常为了好玩而重新发明轮子,所以这里有一种方法可以搜索参数\par
并应用于\opacity
输入的每个段落长度部分。我称之为\oparcity
,以完善 PhARce。
\documentclass{article}
\usepackage{geometry,tikz,xparse}
\geometry{showframe}
\NewDocumentCommand{\opacity}{g g}{%
\IfNoValueTF{#2}
{\IfNoValueTF{#1}
{\pgfsetfillopacity{1}}
{\pgfsetfillopacity{#1}}
}%
{\pgfsetfillopacity{#1}#2\pgfsetfillopacity{1}}%
}
\long\def\oparcity#1#2{\iftrue\def\opvalue{#1}\oppar#2\par\fi}
\long\def\oppar#1\par#2\fi{\fi
\opacity{\opvalue}{#1}\ifx\relax#2\relax\else\par\oppar#2\fi}
\begin{document}
\oparcity{0.5}{some text\par some text some text some text
some text some text some text some\\
text some text some text \\some text}
\end{document}