Eine Unterstreichung mit Texten an beiden Enden einer Zeile

Eine Unterstreichung mit Texten an beiden Enden einer Zeile

Ich möchte zwischen den Texten an beiden Enden einer Zeile ein Leerzeichen einfügen. Zum Beispiel:ein Leerzeichen zwischen Texten an beiden Enden einer Zeile

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

Aber das Obige erscheint nur in der Schülerversion, und ich möchte eine Lehrerversion erstellen, in der die Antwort auch in die Lücke gedruckt wird. Ich habe keine Idee, aber

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

Das Verfahren ist jedoch nicht zufriedenstellend, da die Länge des Rohlings im Vorhinein unbekannt ist.

Meine Probleme:

  1. Wie fügt man Text auf ein ein \hrulefill?

  2. (Eine Bonusfrage) Ich habe herausgefunden, dass die vertikale Position der von \hrulefillund generierten horizontalen Linie \underlineunterschiedlich ist. Wie kann ich die vertikale Position dieser horizontalen Linien steuern?

Antwort1

Obwohl die Methode von cslstr robuster ist, besteht eine Möglichkeit darin, dies \hrulefilldurch eine Methode zu ersetzen, die Unterstreichungen mithilfe von verwendet \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}

Das Ergebnis: Beispielausgabe

Wenn Sie die Antwort linksbündig haben möchten, können Sie den Anfang \ulfrule{}vor der Antwort entfernen:

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

Mehr dazu \xleadersfinden Sie hierin dieser Antwort

Antwort2

Hier ist eine einfache Implementierung:

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

Bildbeschreibung hier eingeben

Der Standardwert für das optionale Argument ist \fill, was bedeutet, dass im Wesentlichen \hrulefillausgeführt wird (aber die Regel herabgesetzt wird). Tatsächlich setzen wirzweiRegeln und das Feld mit der Nullbreite dazwischen, wenn \ifteacheres auf „True“ gesetzt ist.

Antwort3

Diese Methode verwendet einige Neudefinitionen des \ulineMakros, um ulemnur die Unterstreichung eines Textes auszudrucken (wobei der Text selbst unsichtbar ist). (Siehediese Antwortfür eine ähnliche Lösung.)

Ich habe auf jeder Seite des Textes etwas Platz hinzugefügt, sodass die Leerstelle etwas größer ist als nötig (um handschriftliche Notizen zu ermöglichen). Wie dargestellt, können damit auch sehr lange „Leerstellen“, die sich über mehrere Zeilen erstrecken, problemlos verarbeitet werden.

Die Schülerversion wird erstellt, indem der erste \let\filltheblanks...Befehl beibehalten und der zweite kommentiert wird. Die Lehrerversion kommentiert den ersten Befehl und behält den zweiten.

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

Studentenversion:

Studentenversion

Lehrerversion:

Lehrerversion

Antwort4

Eine Variation der Antwort beiErstellen Sie eine Lückentextversion eines Dokuments mit der Möglichkeit, Lückentexte ein- und auszuschalten

Es ermöglicht \answereine durchgehende Unterstreichung (mit Zeilenumbrüchen) und \answerwordseine wortweise Unterstreichung. Entfernen Sie die Kommentare \TeacherCopyin der Präambel und holen Sie sich die Lehrerversion.

BEARBEITEN: Auf Manuels Wunsch hin lasse ich zusätzlichen Platz für die Antwort des Schülers. Dies erreiche ich, indem ich die Schriftgröße \Hugevor dem Beginn der Unterstreichungsschwärzung einstelle und sie anschließend zurücksetze (beachten Sie, dass dies keine Auswirkungen auf die für die Antwort zugewiesene vertikale Höhe hat, da der riesige Text in eine vertikal herausgeforderte Linie derselben Breite umgewandelt wird).

NEU BEARBEITET, sodass die Lehrerversion den gleichen Wortabstand bietet wie die Schülerversion.

Die \censorruleheightund \censorruledepthkönnen geändert werden, um die Höhe, die Linealstärke bzw. die Platzierung zu ändern.

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

Studierendenexemplar:

Bildbeschreibung hier eingeben

Lehrerexemplar:

Bildbeschreibung hier eingeben

verwandte Informationen