我如何在灵魂论证中使用 \input?

我如何在灵魂论证中使用 \input?

所以,我基本上想做这样的事情:

\documentclass{article}
\usepackage{soul}
\begin{document}

\so{Hello}

\so{\input{key.tex}}

\end{document}

现在第一个“so”可以工作,但第二个不行。无论我如何指定文件位置,它都找不到文件。为什么这不起作用,我该如何修复它?也许可以修改灵魂源代码,但我应该修改什么呢?

我宁愿用灵魂来做这件事,因为这是如何制作叠加文本?

答案1

soul包会扫描其参数,但不会直接对其进行排版,因此内容不会通过 插入\input。您需要手动读取文件内容并将其提供给\so(或任何其他soul宏)。使用包可以轻松完成此操作catchfile

\documentclass{article}
\usepackage{catchfile}
\usepackage{soul}
\begin{document}

\CatchFileDef\filecontent{key.tex}{}
\expandafter\so\expandafter{\filecontent}

\end{document}

如果您更频繁地需要这个,请为此定义一个宏:

\newcommand{\soinput}[1]{%
    \begingroup
    \CatchFileDef\filecontent{#1}{}%
    \expandafter
    \endgroup
    \expandafter\so\expandafter{\filecontent}%
}
% ...
\soinput{key}

注意:该组用于保持\filecontent本地的分配,并避免在其他地方使用该宏时发生任何名称冲突。

相关内容