Ich kann in ARTICLE umbrechen, aber nicht in EXAM. Wie kann ich in EXAM umbrechen? (Frage plus – wenn Sie ein LaTeX-Meister sind – Welches ist das am besten geeignete und einfachste Paket, um solche Dinge zu tun?)
Ich kann eine Abbildung in ein ARTIKEL-Dokument einbinden
mit diesem Code
\documentclass[12pt]{article}
\usepackage{graphicx,wrapfig,lipsum}
\usepackage[onehalfspacing]{setspace}
\usepackage{mwe}
\begin{document}
%\begin{questions}
\begin{wrapfigure}{r}{.3\linewidth}
\centering
\includegraphics[width=\linewidth]{example-image-a.png}
\caption{This is A}
\end{wrapfigure}
Hello, I want to wrap this figure in exam
\lipsum[2]\lipsum[1]
%\end{questions}
\end{document}
ABER ich möchte Bilder in EXAM-Dokumenten umbrechen, und dieser Code liefert keine umbrochene Abbildung:
\documentclass[12pt]{exam}
\usepackage{graphicx,wrapfig,lipsum}
\usepackage[onehalfspacing]{setspace}
\usepackage{mwe}
\begin{document}
\begin{questions}
\begin{wrapfigure}{r}{.3\linewidth}
\centering
\includegraphics[width=\linewidth]{example-image-a.png}
\caption{This is A}
\end{wrapfigure}
\question Hello, I want to wrap this figure in exam
\lipsum[2]\lipsum[1]
\end{questions}
\end{document}
**
BEARBEITET (24.02.2019) Nachdem ich die Skillmon-Lösung ausprobiert habe, habe ich ein neues Problem mit Listen (Aufzählung) in den Fragen
**
Mit dem Code (nur im Zusammenhang mit der Abbildung eine Aufschlüsselung hinzufügen)
\documentclass[12pt]{exam}
\usepackage{graphicx,wrapfig,lipsum}
\input{insbox}
\usepackage{capt-of}
\usepackage[onehalfspacing]{setspace}
\usepackage{mwe}
\usepackage{etoolbox}
\makeatletter
%% Stealing some code from exam:
\def\mypointshandling
{%>>>
\if@bonus
\def\padded@point@block{%
\begingroup
\@placepointstrue
\bonuspoint@block
\endgroup
}%
\else
\def\padded@point@block{%
\begingroup
\@placepointstrue
\point@block
\endgroup
}%
\fi
\if@pointsdropped
\else
\if@bonus
\if@bonusqformat
\ifx\ques@ref\@queslevel
\else
\setup@point@toks
\fi
\else
\setup@point@toks
\fi
\else
\if@qformat
\ifx\ques@ref\@queslevel
\else
\setup@point@toks
\fi
\else
\setup@point@toks
\fi
\fi
\fi
\global \MyIfPointsfalse
}%<<<
\newif\ifMyIfPoints
\protected\def\questionInsbox
{%
\@ifnextchar[\questionInsbox@a{\questionInsbox@a[]}%
}
\protected\long\def\questionInsbox@a[#1]#2#3%
{%
\@ifnextchar[{\questionInsbox@b{#1}{#2}{#3}}
{\questionInsbox@b{#1}{#2}{#3}[0]}
}
\long\def\questionInsbox@b#1#2#3[#4]%
{%
\apptocmd\@itemlabel{\hskip\leftmargin}{}{}%
\def\makelabel##1{\hss\llap{##1}}%
\if\relax\detokenize{#1}\relax
\question
\else
\global\MyIfPointstrue
\patchcmd\@readpoints{\global\@placepointstrue}{\relax}{}{}%
\question[#1]%
\patchcmd\@readpoints{\relax}{\global\@placepointstrue}{}{}%
\fi
\patchcmd\@itemlabel{\hskip\leftmargin}{}{}{}%
\let\makelabel\@mklab
\mbox{}%
\vspace*{-\baselineskip}%
\setlength{\leftskip}{\leftmargin}%
\InsertBoxR{#2}{\hskip-\leftmargin#3\hskip\leftmargin}[#4]%
\ifMyIfPoints
\mypointshandling
\fi
\the\point@toks
\ignorespaces
}
\makeatother
\begin{document}
\begin{questions}
\question Jei you
\questionInsbox[5]{0}
{%
\parbox[t]{.3\linewidth}
{%
\centering
\includegraphics[width=\linewidth]{example-image-a.png}
\captionof{figure}{This is A}%
}%
}[1]
Hello, I want to wrap this figure in exam, and you should choose the rigth answer:
\begin{enumerate}
\item \lipsum[1]
\item \lipsum[1]
\end{enumerate}
\question Another
\end{questions}
\end{document}
Die Lösung ist zwar nicht die beste, aber ich habe sie spontan eingetippt:
\question See figure and answer, please:
\begin{enumerate}
\begin{multicols}{2}
\item answer 1
\item ans 2
\item ans 3
{\centering
\begingroup
\centering
\includegraphics[width=1.00\linewidth]{{example-image-a.png}
\vspace{-0.3cm}
\captionof{figure}{}
\label{fig:croquis-rectangulo-ecuacions.png}
\endgroup}
\end{multicols}
\item ans afeter fig
\end{enumerate}
EDIT (2019/02/25) nach EDIT 3 von Skillmon Ich bewundere Ihr Wissen über LaTeX-Programmierung. Es ist fantastisch!!
Die Lösung ist für normalen Text perfekt, aber wenn Sie Listen verwenden (aufzählen, aufschlüsseln, ...), bleibt das Problem bestehen. Nachdem ich die letzten Kommentare (24.02.2019) von Skillmon gelesen habe, habe ich beschlossen, die Listen in normalem Text zu simulieren. Mit \ a) Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1 Antwort 1\ b) Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2 Antwort 2\
LaTeX ist so schön, so kompliziert!!
Ich warte auf diese Option (ich bin optimistisch, ja!! :-) ) im zukünftigen Prüfungsunterricht ... Ich werde Ihre Lösungen manchmal verwenden.
Scheitert nur am unteren Seitenrand, soweit ich das sehe, und wenn Sie \questionInsboxL[5]{2} mit nahezu leerer Seite zwischen den Fragen verwenden.
DANKE FÜR ALLE IHRE LÖSUNGEN UND BEMÜHUNGEN!
DANKE, SKILLMON
Antwort1
wrapfig
funktioniert nicht in Listen und questions
ist nur eine andere Version einer Liste. Das Folgende ist eine schnelle und einfache Neuimplementierung vonhttps://tex.stackexchange.com/a/453624/117050enumerate
um mit ähnlichen Listen statt mit zu arbeiten itemize
. Es verwendet insbox
genau wie @Bernards Antwort, sollte aber keinen manuellen Absatz erfordern. Es implementiert nur den Code zum Umbrechen innerhalb einer Frage, nicht auch innerhalb der nächsten.
BEARBEITEN:Es sollte jetzt das Punktesystem unterstützen exam
, aber ich habe es nicht gründlich getestet. Sie können zurückkommen und sich beschweren, wenn es nicht funktioniert.
EDIT2:Die Schnittstelle wurde optimiert, damit sie mehr der von ähnelt \InsertBoxR
. Der Name des neuen Makros lautet \questionInsboxR
und es verwendet ein optionales Argument, zwei obligatorische und ein zweites optionales. Das erste optionale Argument ist wie das von \question
, die beiden obligatorischen Argumente und das folgende optionale sind wie die von \InsertBoxR
.
EDIT3:Hinzugefügtes \questionInsboxL
, behobenes Verhalten bei mehrfacher \questionInsboxL/R
Verwendung innerhalb einer questions
Umgebung.
\documentclass[12pt]{exam}
\usepackage{graphicx,wrapfig,lipsum}
\input{insbox}
\usepackage{capt-of}
\usepackage[onehalfspacing]{setspace}
\usepackage{mwe}
\usepackage{etoolbox}
\makeatletter
%% Stealing some code from exam:
\def\mypointshandling
{%>>>
\if@bonus
\def\padded@point@block{%
\begingroup
\@placepointstrue
\bonuspoint@block
\endgroup
}%
\else
\def\padded@point@block{%
\begingroup
\@placepointstrue
\point@block
\endgroup
}%
\fi
\if@pointsdropped
\else
\if@bonus
\if@bonusqformat
\ifx\ques@ref\@queslevel
\else
\setup@point@toks
\fi
\else
\setup@point@toks
\fi
\else
\if@qformat
\ifx\ques@ref\@queslevel
\else
\setup@point@toks
\fi
\else
\setup@point@toks
\fi
\fi
\fi
\global \MyIfPointsfalse
}%<<<
\protected\long\def\myOargparse#1#2%>>>
{%
\@ifnextchar[{\myOargparse@{#2}}{#2{#1}}%
}%<<<
\long\def\myOargparse@#1[#2]%>>>
{%
#1{#2}%
}%<<<
\def\q@mark{\q@mark}
\newif\ifMyIfPoints
\newif\if@notfirstins
\protected\def\questionInsboxL%>>>
{%
\myOargparse{\q@mark}{\questionInsbox@a\InsertBoxL}%
}%<<<
\protected\def\questionInsboxR%>>>
{%
\myOargparse{\q@mark}{\questionInsbox@a\InsertBoxR}%
}%<<<
\protected\long\def\questionInsbox@a#1#2#3#4%>>>
{%
\myOargparse{0}{\questionInsbox@b{#1}{#2}{#3}{#4}}%
}%<<<
\protected\long\def\questionInsbox@b#1#2#3#4#5%>>>
{%
\if@notfirstins
\else
\def\makelabel##1{\hss\llap{##1}}%
\apptocmd\@itemlabel{\hskip\leftmargin}{}{}%
\fi
\ifx\q@mark#2%
\question
\else
\global\MyIfPointstrue
\patchcmd\@readpoints{\global\@placepointstrue}{\relax}{}{}%
\question[{#2}]%
\patchcmd\@readpoints{\relax}{\global\@placepointstrue}{}{}%
\fi
\if@notfirstins
\else
\patchcmd\@itemlabel{\hskip\leftmargin}{}{}{}%
\let\makelabel\@mklab
\@notfirstinstrue
\fi
\mbox{}%
\vspace*{-\baselineskip}%
\setlength{\leftskip}{\leftmargin}%
\ifx\InsertBoxR#1%
#1{#3}{\hskip-\leftmargin#4\hskip\leftmargin}[{#5}]%
\else
#1{\numexpr#3+1\relax}{#4}[{#5}]\par\hspace{\itemindent}%
\fi
\ifMyIfPoints
\mypointshandling
\fi
\the\point@toks
\ignorespaces
}%<<<
\makeatother
\begin{document}
\begin{questions}
\question[5]\lipsum[2]
\questionInsboxR[5]{0}
{%
\parbox[t]{.3\linewidth}
{%
\centering
\includegraphics[width=\linewidth]{example-image-a.png}%
\captionof{figure}{This is A}%
}%
}[1]
Hello, I want to wrap this figure in exam
\lipsum[1]
\questionInsboxL[5]{2}
{%
\parbox[t]{.3\linewidth}
{%
\centering
\includegraphics[width=\linewidth]{example-image-a.png}%
\captionof{figure}{This is A}%
}%
}[1]
Hello, I want to wrap this figure in exam
\lipsum[1]
\end{questions}
\end{document}
Antwort2
Hier ist eine Lösung mit caption
dem einfachen TeX insbox
-Makropaket. Es definiert einen \InsertBoxR
Befehl, der ganz am Anfang eines Absatzes eingefügt werden soll und zwei obligatorische Argumente akzeptiert: die Anzahl der unberührten Zeilen, bevor eine Box-ID eingefügt wird, und die eingefügte Box selbst. Falls TeX außerdem die Anzahl der erforderlichen kürzeren Zeilen falsch berechnet, akzeptiert es als optionales Argument die Anzahl der zusätzlichen kürzeren Zeilen, die Sie möchten.
\documentclass[12pt]{exam}
\usepackage{graphicx,wrapfig,lipsum}
\usepackage[onehalfspacing]{setspace}
\usepackage{mwe}
\usepackage{caption}
\input{insbox}
\begin{document}
\begin{questions}
\question
Hello, I want to wrap this figure in exam. \par
\InsertBoxR {0}{\parbox{0.3\linewidth}{\includegraphics[width=\linewidth]{example-image-a.png}\captionof{figure}{This is A}}}[3]
\lipsum[2]\lipsum[1]
\end{questions}
\end{document}