线两端均有文字的下划线

线两端均有文字的下划线

我想在一行的两端的文本之间留出空白。例如,行两端文本之间的空白

\begin{enumerate}
\item There \hrulefill\ in the room.
\end{enumerate}

但是,上面的内容只出现在学生版中,我想制作一个教师版,答案也打印在空白处。我不知道,但是

\begin{enumerate}
\item There \underline{\makebox[100pt][l]{is a chair}} in the room.
\end{enumerate}

由于事先不知道毛坯的长度,所以该方法并不令人满意。

我的问题:

  1. 如何将文字放在 上\hrulefill

  2. \hrulefill(加分题)我发现和生成的水平线的垂直位置\underline不一样,如何控制这些水平线的垂直位置?

答案1

虽然 cslstr 的方法更为强大,但实现此目的的一种方法是将 替换\hrulefill为使用下划线的方法\xleaders

\documentclass[letter,10pt]{article}
\newcommand{\ulfrule}{\xleaders\hbox{\underline{ }}\hfill\kern0pt}
\begin{document}
\begin{enumerate}
\item There \hrulefill{} in the room.
\item There \ulfrule{} in the room.
\item There \ulfrule{}\underline{is a chair}\ulfrule{} in the room.
\end{enumerate}
\end{document}

其结果为: 示例输出

如果您希望答案左对齐,您可以删除\ulfrule{}答案前面的开头:

\documentclass[letter,10pt]{article}
\newcommand{\ulfrule}{\xleaders\hbox{\underline{ }}\hfill\kern0pt}
\begin{document}
\begin{enumerate}
\item There \hrulefill{} in the room.
\item There \ulfrule{} in the room.
\item There \underline{is a chair}\ulfrule{} in the room.
\end{enumerate}
\end{document}

更多关于\xleaders可以找到的内容在这个答案中

答案2

这是一个简单的实现:

\documentclass{article}

\newif\ifteacher % starts out false

\newcommand{\fillanswer}[2][\fill]{%
  \unskip\ \lhrulefill{#1}%
  \ifteacher\makebox[0pt]{#2}\fi
  \lhrulefill{#1}\ \ignorespaces}
\newcommand{\lhrulefill}[1]{%
  \leavevmode
  \leaders\hrule height -.3ex depth \dimexpr .3ex+.4pt\relax % define the leader
  \hskip\glueexpr#1/2\relax\relax % how much it should extend
  \kern0pt
}


\begin{document}

\begin{enumerate}
\item There \fillanswer{is a chair} in the room.

\item There \fillanswer[5cm]{is a chair} in the room.

\teachertrue
\item There \fillanswer{is a chair} in the room.

\item There \fillanswer[5cm]{is a chair} in the room.
\end{enumerate}

\end{document}

在此处输入图片描述

可选参数的默认值是\fill,这意味着本质上\hrulefill会执行(但规则会降低)。实际上我们设置\ifteacher当设置为 true时,规则和它们之间的零宽度框。

答案3

此方法使用一些\uline宏的重新定义来ulem打印出某些文本的下划线(文本本身不可见)。(见这个答案以获得类似的解决方案。

我在文本的两边各加了一些空间,这样空白就比需要的要大一些(以便于手写)。如图所示,这还可以很好地处理非常长的“空白”,这些“空白”最终会延伸到多行。

学生版保留第一条\let\filltheblanks...命令,注释第二条命令。教师版注释第一条命令,保留第二条命令。

\documentclass[]{report}

\usepackage{enumerate}
\usepackage[normalem]{ulem}

\begin{document}
\LARGE % Size seemed appropriate for this type of assignment

% Fill-in-the-blank command
\newcommand{\fillintheblank}[1]{\uline{\qquad#1\qquad}}

% For Student Version
\let\filltheblanks\phantom

% For Teacher Version
\let\filltheblanks\null

% Redefined \uline
\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}%
    \filltheblanks{\box\UL@box}%
  \fi}
\makeatother
%%%%%%%%%%%%%%%%


\begin{enumerate}[1.]

\item There \fillintheblank{was a dog} in the room.

\item There \fillintheblank{was a very, large, wet and disgusting looking dog} outside my door.

\end{enumerate}

\end{document}

学生版:

学生版

教师版:

教师版

答案4

答案的变体为创建文档的填空版本,并可以打开或关闭空白

它提供\answer连续下划线(带换行符)和\answerwords逐字下划线。取消\TeacherCopy序言中的注释,即可获得教师版。

编辑,根据 Manuel 的要求,我为学生的答案留出了额外的空间,我通过\Huge在开始下划线涂黑之前设置字体大小,然后在之后重置它来实现(请注意,这不会影响分配给答案的垂直高度,因为巨大的文本被转换成相同宽度的垂直挑战规则)。

已重新编辑,以便教师版本提供与学生版本相同的字间距。

和可以分别改变高度、规则厚度和位置\censorruleheight\censorruledepth

\documentclass{article}
\usepackage{censor}
\usepackage{xcolor}
\usepackage{readarray}
\usepackage{ifthen}
\censorruledepth=-.2ex
\censorruleheight=.1ex
\newcounter{index}
\def\mysize{\Huge}
\def\answer#1{\mysize\xblackout{#1}\normalsize}
\def\answerwords#1{\mysize\blackout{#1}\normalsize}
\def\TeacherCopy{%
  \def\answer##1{%
    \color{red}%
    \getargsC{##1}%
    \setcounter{index}{0}%
    \whiledo{\theindex<\narg}{%
      \stepcounter{index}%
      \setbox0=\hbox{\mysize\csname arg\romannumeral\theindex\endcsname}%
      \underline{$\vphantom{g}$%
                 \makebox[\wd0]{\csname arg\romannumeral\theindex\endcsname}}%
      \mysize\ \normalsize%
    }%
    \unskip%
    \color{black}%
  }%
  \let\answerwords\answer%
}
%\TeacherCopy
\parindent0pt
\begin{document}
\begin{enumerate}
\item And the answer to life, the universe, and everything, is \answer{forty two}.

\item The beginning six words of the Gettysburg Address are 
\answerwords{Four score and seven years ago}.

\end{enumerate}
\end{document}

学生副本:

在此处输入图片描述

教师抄送:

在此处输入图片描述

相关内容