
Ich möchte zwischen den Texten an beiden Enden einer Zeile ein Leerzeichen einfügen. Zum Beispiel:
\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:
Wie fügt man Text auf ein ein
\hrulefill
?(Eine Bonusfrage) Ich habe herausgefunden, dass die vertikale Position der von
\hrulefill
und generierten horizontalen Linie\underline
unterschiedlich 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 \hrulefill
durch 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:
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 \xleaders
finden 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}
Der Standardwert für das optionale Argument ist \fill
, was bedeutet, dass im Wesentlichen \hrulefill
ausgeführt wird (aber die Regel herabgesetzt wird). Tatsächlich setzen wirzweiRegeln und das Feld mit der Nullbreite dazwischen, wenn \ifteacher
es auf „True“ gesetzt ist.
Antwort3
Diese Methode verwendet einige Neudefinitionen des \uline
Makros, um ulem
nur 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:
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 \answer
eine durchgehende Unterstreichung (mit Zeilenumbrüchen) und \answerwords
eine wortweise Unterstreichung. Entfernen Sie die Kommentare \TeacherCopy
in 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 \Huge
vor 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 \censorruleheight
und \censorruledepth
kö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:
Lehrerexemplar: