Um sublinhado com textos em ambas as extremidades de uma linha

Um sublinhado com textos em ambas as extremidades de uma linha

Quero deixar um espaço em branco entre os textos nas duas extremidades de uma linha. Por exemplo,um espaço em branco entre os textos em ambas as extremidades de uma linha

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

Porém, o acima aparece apenas na versão do aluno, e quero fazer uma versão do professor onde a resposta também esteja impressa no espaço em branco. Eu não tenho ideia, mas

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

O método não é satisfatório porque o comprimento da peça em bruto é desconhecido antecipadamente.

Meus problemas:

  1. Como colocar texto em um \hrulefill?

  2. (Uma pergunta bônus) Descobri que a posição vertical da regra horizontal gerada por \hrulefille \underlineé diferente. Como posso controlar a posição vertical dessas regras horizontais?

Responder1

Embora o método do cslstr seja mais robusto, uma maneira de fazer isso é substituir o \hrulefillpor um que use sublinhados usando \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}

O que produz: saída de exemplo

Se você quiser que a resposta fique alinhada à esquerda, você pode remover o início \ulfrule{}antes da resposta:

\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}

Mais sobre o \xleadersque pode ser encontradonesta resposta

Responder2

Aqui está uma implementação simples:

\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}

insira a descrição da imagem aqui

O valor padrão para o argumento opcional é \fill, o que significa que essencialmente \hrulefillé executado (mas a regra é reduzida). Na verdade nós definimosdoisregras e a caixa de largura zero entre elas quando \ifteacherdefinido como verdadeiro.

Responder3

Este método usa algumas redefinições da \ulinemacro para ulemimprimir apenas o sublinhado de algum texto (com o próprio texto invisível). (Veresta respostapara uma solução semelhante.)

Adicionei um pouco de espaço em cada lado do texto para que o espaço em branco fique um pouco maior do que deveria ser (para permitir a escrita à mão). Conforme ilustrado, isso também lidará com "espaços em branco" muito longos que acabam se estendendo por várias linhas.

A Versão Estudante é feita mantendo o primeiro \let\filltheblanks...comando e comentando o segundo. A versão Teacher comenta o primeiro comando e mantém o segundo.

\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}

Versão do aluno:

versão estudante

Versão do professor:

versão do professor

Responder4

Uma variação da resposta emCrie uma versão para preencher espaços em branco de um documento com a capacidade de ativar e desativar espaços em branco

Ele fornece \answersublinhado contínuo (com quebras de linha) e \answerwordssublinhado palavra por palavra. Remova o comentário \TeacherCopyno preâmbulo e obtenha a versão do professor.

EDIT, a pedido do Manuel, deixo espaço extra para a resposta do aluno, o que faço definindo o tamanho da fonte \Hugeantes de iniciar o blecaute do sublinhado e, em seguida, redefinindo-o posteriormente (observe que isso não afeta a altura vertical alocada para a resposta, já que o texto Enorme é convertido em uma regra desafiada verticalmente da mesma largura).

REEDITADO para que a versão do professor forneça o mesmo espaçamento entre palavras da versão do aluno.

O \censorruleheighte \censorruledepthpode ser alterado para alterar a elevação, a espessura e o posicionamento da régua, respectivamente.

\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}

Cópia do aluno:

insira a descrição da imagem aqui

Cópia do professor:

insira a descrição da imagem aqui

informação relacionada