一个类似幻影的命令,用水平线替换文本?

一个类似幻影的命令,用水平线替换文本?

我正在尝试找到一种方法,用水平线替换部分文本。我希望它的行为像幻影命令一样,用正确宽度(和高度)的空框替换文本,但会在该框中放置一条水平线。

作为一个具体的例子,我正在寻找一个类似\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}

相关内容