Wie umschließt man eine Abbildung in einem Prüfungsdokument?

Wie umschließt man eine Abbildung in einem Prüfungsdokument?

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}

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

**

BEARBEITET (24.02.2019) Nachdem ich die Skillmon-Lösung ausprobiert habe, habe ich ein neues Problem mit Listen (Aufzählung) in den Fragen

**

Das ist das Problem Bildbeschreibung hier eingeben

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!

Bildbeschreibung hier eingeben

DANKE, SKILLMON

Antwort1

wrapfigfunktioniert nicht in Listen und questionsist nur eine andere Version einer Liste. Das Folgende ist eine schnelle und einfache Neuimplementierung vonhttps://tex.stackexchange.com/a/453624/117050enumerateum mit ähnlichen Listen statt mit zu arbeiten itemize. Es verwendet insboxgenau 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 \questionInsboxRund 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/RVerwendung innerhalb einer questionsUmgebung.

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

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Lösung mit captiondem einfachen TeX insbox-Makropaket. Es definiert einen \InsertBoxRBefehl, 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} 

Bildbeschreibung hier eingeben

verwandte Informationen