我正在尝试找到一种方法,用水平线替换部分文本。我希望它的行为像幻影命令一样,用正确宽度(和高度)的空框替换文本,但会在该框中放置一条水平线。
作为一个具体的例子,我正在寻找一个类似\phantomdash
命令的东西,以这种方式将其添加到文本中
Lorem ipsum dolor sit amet, \phantomdash{consectetuer adipiscing} elit...
将用与参数“consectetuer adipiscing”宽度相同的水平线替换“consectetuer adipiscing”。
问题:已经有这个命令了吗?如果没有,有什么方法可以实现这个?
答案1
censor
可以在这方面提供帮助:
\documentclass{article}
\usepackage{censor}% http://ctan.org/pkg/censor
\setlength{\censorruledepth}{.5ex}
\setlength{\censorruleheight}{.4pt}
\let\phantomdash\xblackout
\begin{document}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit\ldots
Lorem ipsum dolor sit amet, \phantomdash{consectetuer adipiscing} elit\ldots
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse eget pharetra nisi, at cursus orci. Fusce ipsum justo, \ldots
Lorem ipsum dolor sit amet, consectetur adipiscing elit. \phantomdash{Suspendisse eget pharetra} nisi, at cursus orci. Fusce ipsum justo, \ldots
\end{document}
答案2
\documentclass{article}
\usepackage[normalem]{ulem}
\newcommand\phantomdash[1]{%
\uline{\phantom{#1}}%
}
\begin{document}
Lorem ipsum dolor sit amet, \phantomdash{consectetuer adipiscing} elit...
\end{document}
如果你愿意的话,你可以将该行向上移动:
\documentclass{article}
\usepackage[normalem]{ulem}
\newcommand\phantomdash[1]{%
\setlength\ULdepth{-0.5ex}
\uline{\phantom{#1}}%
}
\begin{document}
Lorem ipsum dolor sit amet, \phantomdash{consectetuer adipiscing} elit...
\end{document}
答案3
我写了很多文档,其中我创建了测验答案的空白,然后填写了答案或解决方案表的空白。这是我对此采取的方法。
\documentclass{article}
\makeatletter
\newif\ifhideanswers
\hideanswerstrue
\newlength\ae@tmp@length
\newcommand\phantomdash[1]{%%
\ifhideanswers
\settowidth\ae@tmp@length{#1}%%
\rule[-0.25ex]{\ae@tmp@length}{0.4pt}%%
\else
#1%%
\fi}
\makeatother
\begin{document}
What is the antipode of the north pole? \phantomdash{the south pole}.
\hideanswersfalse
What is the antipode of the north pole? \phantomdash{the south pole}.
\end{document}
只要您不打算在长文本字符串下划线,这种方法就相当有效。特别是,如果您不担心要隐藏的文本会跨行,那么我发现这是一种相当不错的方法。如果您需要文本跨行,那么这种方法就不太好。
此外,我不喜欢为了重写一行而打开和关闭文件 --- 不可避免地我会意外删除或添加一些我不想要的东西,尤其是在我匆忙的时候。所以,我通常会对外部隐藏文件的存在进行某种测试,以确定是否应该设置标志。例如,我可能会在序言中写一些类似以下内容的内容:
\IfFileExists{./.design/hide.answers.true}{\hideanswerstrue}{\hideanswersfalse}