3

I am trying insert a picture into environment Problem and align it like thisenter image description here

I tried

\documentclass{article}
\usepackage{amsmath}
\usepackage{enumerate}
\usepackage{amsthm}
\theoremstyle{definition}
\usepackage{graphicx}
\newtheorem{ex}{Problem}
\begin{document}
\begin{ex}
\begin{figure}
    \centering
    \begin{minipage}{0.45\textwidth}
    I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem.
    \begin{enumerate}[A]
        \item First line.
        \item Second line.
        \item Third line.
        \item  A long line.
    \end{enumerate}
    \end{minipage}\hfill
    \begin{minipage}{0.45\textwidth}
        \centering
        \includegraphics[width=0.9\textwidth]{pic_01} % second figure itself
        \caption{second figure}
    \end{minipage}
\end{figure}
\end{ex}

\end{document}

And got

enter image description here

This is not what I want. How can I get the correct result?

This is the picture that I insert.

enter image description here

And the code make the picture

\documentclass[12pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\pgfplotsset{compat=1.9}
\usepackage{fouriernc}

\begin{document}
\begin{tikzpicture}
\begin{axis}
[
declare function={Y(\x)=(\x^3 - 3*\x^2 + 2);},
xticklabels={},yticklabels={},
axis line style = very thick,
    axis lines = center,
    xlabel=$x$,ylabel=$y$,
    xtick={-1, 0, 1,3},
        domain=-1.5:3.5,
        ymin=-2.5,
        ymax=2.5,
        xmin=-1.5,
        xmax=3.5,
    samples=100,xtick distance=1,
ytick distance=1,unit vector ratio*=1 1 1,
    width=11cm,
    grid=major,
    grid style={gray!30}]
\addplot [black, thick,name path =B] {Y(x)};
\addplot [black, mark=*,only marks,samples at={-1,0,1,2,3,4}] {Y(x)};
\node at (axis cs:-0.25, -0.25) {$O$} ;
\node at (axis cs:2, 0.2) {$2$} ;
\node at (axis cs:-0.2, 2.2) {$2$} ;
\node at (axis cs:-0.2, -2.2) {$-2$} ;
\addplot[name path =A] {0}\closedcycle;
\addplot[color=black,fill=red, pattern=north east lines,  domain=0:1,samples=100] fill between[of=A and B,soft clip={domain=0:2},];
\pgfplotsinvokeforeach{-1,2,3}{
\draw [black,dashed,thick](axis cs:#1,{Y(#1)}) -- (axis cs:#1,0); 
       \draw [black,dashed,thick](axis cs:#1,{Y(#1)}) -- (axis cs:0,{Y(#1)});
}
\addplot [thick] coordinates {(2,-2) (2,0)};
\end{axis}
\end{tikzpicture}
\end{document} 
  • Off topic: why don't you create the picture using LaTeX for the best quality? Using images is always not as good as creating the picture directly. – JouleV Mar 8 at 15:50
4

Several points:

  1. The ex environment must go inside the 1st minipage

  2. No need for a figure environment, figure has no caption. Even if it did, I would use \captionof inside of 2nd minipage.

  3. Top align the minipages, and shift down the \includegraphics.

  4. Use enumitem to tailor the enumeration.

The MWE:

\documentclass{article}
\usepackage{amsmath}
\usepackage{enumitem}%\usepackage{enumerate}
\usepackage{amsthm}
\theoremstyle{definition}
\usepackage{graphicx}
\newtheorem{ex}{Problem}
\begin{document}
%\begin{figure}
    \centering
    \begin{minipage}[t]{0.6\textwidth}
\begin{ex}
    I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem. I want to put the picture align with the first row of Problem.
    \begin{enumerate}[leftmargin=30pt,itemsep=0pt,label=\Alph*.]
        \item First line.
        \item Second line.
        \item Third line.
        \item  A long line.A long line.A long line.A long line.A long line.
    \end{enumerate}
\end{ex}
    \end{minipage}\hfill
    \begin{minipage}[t]{0.35\textwidth}
        \centering\raisebox{-\dimexpr\height-7pt}{%
         \includegraphics[width=0.9\textwidth,height=150pt]{example-image}} % second figure itself
 %       \caption{second figure}
    \end{minipage}
%\end{figure}

\end{document}

enter image description here

  • Perhaps it is not really correct. Top of the picture align with fisrt row of the problem. Can you make a marco of this problem? – minhthien_2016 Mar 8 at 16:04
  • @minhthien_2016 Can be adjusted. See edit. – Steven B. Segletes Mar 8 at 16:10
  • This is done by hand? Can you make it automatically? – minhthien_2016 Mar 8 at 16:12
  • @minhthien_2016 The 7pt is "fitted" once. Now it should work for all cases, if you don't change the documentclass, fontsize etc. – Steven B. Segletes Mar 8 at 16:13
3

a alternative solution, which consider your diagram drawn by pgfplots. code for diagram is changed, that it can be placed according to your demand. in it is also considered recent version of pgfplots package and accordingly simplified code for it.

enter image description here

\documentclass{article}
\usepackage{fouriernc}
\usepackage{amsmath, amsthm}
\theoremstyle{definition}
\newtheorem{ex}{Problem}
\usepackage{enumitem}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
\centering
    \begin{minipage}[t]{0.6\textwidth}
\begin{ex}
I want to put the picture align with the first row of Problem.
    \begin{enumerate}[leftmargin=*,label=\Alph*.,itemsep=0pt]
        \item First line.
        \item Second line.
        \item Third line.
        \item  A long line. A long line. A long line. A long line. A long line. A long line. A long line. A long line. A long line.
    \end{enumerate}
\end{ex}
    \end{minipage}\hfill
    \begin{minipage}[t]{0.35\textwidth}
\begin{tikzpicture}[baseline=(current bounding box.north)] % <---
    \begin{axis}[yshift=1.7ex, width=\linewidth,           % <---
axis line style = very thick,
      grid = major,
grid style = {gray!30},
axis lines = middle,
    xlabel = $x$,
    ylabel = $y$,
     xtick = {-1,...,3}, xticklabels = {},
     ytick = {-2,...,2}, yticklabels = {},
scale only axis,                                             % <---
 %
declare function = {Y(\x)=(\x^3 - 3*\x^2 + 2);},
ymin=-2.5, ymax=2.8,
    domain = -1.5:3.5,
   samples = 60
                ]
\addplot [name path =A] {0}\closedcycle;
\addplot [thick,name path =B] {Y(x)};
\addplot [mark=*,only marks,samples at={-1,0,1,2,3}] {Y(x)};
\node[below left]  {$O$} ;
    \begin{scope}[font=\footnotesize]
\node[above]      at (2,0) {2};
\node[above left] at (0, 2) {$ 2$};
\node[below left] at (0,-2) {$-2$};
    \end{scope}
\addplot[pattern=north east lines] fill between[of=A and B, soft clip={domain=0:2}];
\draw[dashed,thick] (-1,0) |- (2,{Y(2)}) -- (2,0)
                    ( 0,2) -| (3,0);
    \end{axis}
\end{tikzpicture}
     \end{minipage}
\end{document}
  • Is there a way to put two minipages between \begin{ex} and \end{ex}? – minhthien_2016 Mar 8 at 23:54
  • @minhthien_2016, yes, it is possible. however, you should be aware, that your environment has text Problem in the first line of environment. just make some test and you will see what i mean. – Zarko Mar 9 at 0:14
  • How about a general method? – minhthien_2016 Mar 9 at 0:29
  • @minhthien_2016, sorry, i do not understand you what you mean with "general method#. if you have new question, please ask it as such. in question describe/illustrate what you like to achieve in where you stuck in your efforts to do this. – Zarko Mar 9 at 1:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.