所以,我基本上想做这样的事情:
\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
本地的分配,并避免在其他地方使用该宏时发生任何名称冲突。