我想使用 LaTeX 进行完形填空测试。我的想法是使用以下\phantom
命令生成空格:
Some text \underline{\phantom{some text to complete}} some more text.
现在的问题是,\phantom
似乎将“一些要完成的文本”处理为一个单词,并且不会换行。
\documentclass{minimal}
\begin{document}
Some text \underline{\phantom{some text to complete some text to complete
some text to complete some text to complete some text to complete some text
to complete some text to complete}} some more text.
\end{document}
答案1
也\underline
不允许\phantom
换行,因为它们使用所谓的受限水平模式,即与 相同\mbox{...}
。您的应用程序让我想起了censor
能够删除文本并将其替换为黑条或下划线的包。但是,它似乎也不支持换行。该ulem
包\uline
以可换行的方式为文本添加下划线。您可以使用它并重新定义内部宏,将文本设置为使用幻影框。请注意,这只允许在正常空格处换行,而不允许连字符。
\documentclass{article}
\usepackage[normalem]{ulem}
\makeatletter
\def\UL@putbox{\ifx\UL@start\@empty \else % not inner
\vrule\@width\z@ \LA@penalty\@M
{\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}%
\phantom{\box\UL@box}%
\fi}
\makeatother
\begin{document}
Some text \uline{some text to complete some text to complete
some text to complete some text to complete some text to complete some text
to complete some text to complete} some more text.
\end{document}
答案2
我通过使用color
包将幻影线写成白色来解决了这个问题:
\usepackage{color}
\newcommand{\white}[1]{{\textcolor{white}{#1}}}
Some text \underline{\white{some text to complete}} some more text.