ARTICLE에서는 랩할 수 있지만 EXAM에서는 랩할 수 없습니다. 시험을 어떻게 마무리하나요? (추가 질문-LaTeX 마스터라면-.- 이런 종류의 작업을 수행하는 데 적합하고 쉬운 mosr 패키지는 무엇입니까?)
ARTICLE 문서에 그림을 감쌀 수 있습니다
이 코드로
\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}
하지만 EXAM 문서에 이미지를 래핑하고 싶은데 이 코드는 래핑된 그림을 제공하지 않습니다.
\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}
**
편집됨 (2019/02/24) Skillmon 솔루션을 시도한 후 질문에 목록(열거)에 새로운 문제가 있습니다.
**
코드 포함(그림과 함께 thq euestion에 itemize만 추가)
\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}
최고는 아니지만... 즉석에서 내가 입력한 해결책은 다음과 같습니다.
\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 3 이후 EDIT(2019/02/25) 나는 LaTeX 프로그래밍에 대한 당신의 지식을 존경합니다. 환상적이야!!
일반 텍스트에는 완벽한 솔루션이지만 목록(열거, 항목화 등)을 사용할 때 문제는 남아 있습니다. Skillmon의 마지막 댓글(2019/02/24)을 읽은 후 일반 텍스트로 목록을 시뮬레이션하기로 결정했습니다. \ a) 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1 답변 1\ b) 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2 답변 2\
LaTeX는 너무 아름답고 너무 복잡해요!!
앞으로 시험 수업에서 이 옵션을 기다리고 있습니다(저는 낙관적입니다. 그렇습니다!! :-) ). 가끔 귀하의 솔루션을 사용할 것입니다.
내가 볼 수 있는 한 페이지 하단에서만 실패하며, 질문 사이에 빈 페이지에 가까운 \questionInsboxL[5]{2}을 사용할 경우에만 실패합니다.
귀하의 모든 솔루션과 노력에 감사드립니다!
고마워요, 스킬몬
답변1
wrapfig
목록에서는 작동하지 않으며 questions
목록의 또 다른 버전일 뿐입니다. 다음은 빠르고 지저분한 재구현입니다.https://tex.stackexchange.com/a/453624/117050enumerate
대신에 유사한 목록을 사용하여 작업합니다 itemize
. insbox
@Bernard의 답변과 동일하게 사용되지만 수동 단락이 필요하지 않습니다. 다음 질문 내부가 아닌 하나의 질문 내부를 래핑하는 코드만 구현합니다.
편집하다:이제 exam
의 포인트 시스템을 지원해야 하지만 철저하게 테스트하지 않았습니다. 잘 안되면 돌아와서 불평할 수도 있습니다.
편집2:인터페이스를 다음 중 하나와 유사하게 간소화했습니다 \InsertBoxR
. 새 매크로의 이름은 \questionInsboxR
이고 선택적 인수, 두 개의 필수 인수, 두 번째 선택적 인수를 사용합니다. 첫 번째 선택적 인수는 의 하나와 같고 \question
, 두 개의 필수 인수와 다음 선택적 인수는 의 것과 같습니다 \InsertBoxR
.
편집3:하나의 환경 내에서 여러 사용 \questionInsboxL
의 고정 동작이 추가되었습니다 .\questionInsboxL/R
questions
\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}
답변2
caption
다음은 일반 TeX 매크로 패키지를 사용한 솔루션입니다 insbox
. \InsertBoxR
이는 두 개의 필수 인수, 즉 상자 ID가 삽입되기 전의 손대지 않은 줄 수와 삽입된 상자 자체를 사용하여 단락의 시작 부분에 삽입되는 명령을 정의합니다 . 게다가, TeX가 필요한 짧은 줄 수를 잘못 계산한 경우, 원하는 추가 짧은 줄 수를 선택적 인수로 받아들입니다.
\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}