在 wrapfigure 环境中生成 tikz 图片时出现问题

在 wrapfigure 环境中生成 tikz 图片时出现问题

我在这篇论文中使用 tikz 图片工具绘制一些图表,并使用 wrapfigure 环境将它们放置在文本中。

问题是,当我运行代码时,图片被放置在我想要的位置的下方,在第一行文本和图片之间留有一个空格。在我看来,这个空间的宽度与一行文本的宽度相同。

我的代码和文档在这里:

\documentclass[final, 12pt,oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\usepackage{amsmath} % American Mathematics Society standards
\usepackage{graphicx} % Extended graphics package.

\usepackage{amsxtra}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{ dsfont }
\usepackage{latexsym}
\usepackage{spverbatim}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage{biblatex}
\usepackage{csquotes}

%BIBLIOGRAFÍA

\addbibresource{bibliografia.bib}
\topmargin      = -0.56in
\textheight     =  8.60in
\textwidth      =  6.46in
\oddsidemargin  =  0.02in

%TEOREMAS
\newtheorem{theorem}{Theorem}[section]
\newtheorem{prop}{Proposición}
\newtheorem{corollary}{Corollary}[theorem]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem*{remark}{Observación}
\newtheorem{exmp}{Ejemplo}[section]
\def\proof{\paragraph{Demostraci\'on:\\}}
\def\endproof{\hfill$\square$}

\theoremstyle{definition}
\newtheorem{definition}{Definición}[chapter]


%WRAPFIGURE
\usepackage{wrapfig}
\usepackage{adjustbox}

%TIKZ
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{shapes.geometric, arrows, angles, intersections, calc, math, quotes}
\usetikzlibrary{babel}

%COLORES
\usepackage{xcolor}
\definecolor{gualda}{RGB}{250,194,43}
\definecolor{rred}{RGB}{212,42,32}
\definecolor{bblue}{RGB}{14,99,142}

%ESPACIOS
\setlength{\parskip}{0.5 em}
\setlength{\baselineskip}{1.5 em}


\begin{document}

\noindent \textsc{Axiomas de Ordenación:}\par
\noindent \textbf{B1.} Si $B$ está entre $A$ y $C$, (escrito como $A*B*C$), entonces $A$, $B$, $C$ son tres puntos distintos que pertenecen a la misma recta, y también $C*B*A$.\par

\noindent \textbf{B2.} Para cualquiera dos puntos distintos $A$, $B$, existe un punto $C$ tal que $A*B*C$.\par

\noindent \textbf{B3.} Dados $A$, $B$, $C$, tres puntos distintos en una recta, uno y sólo uno de ellos está entre los otros dos. Es decir: $A*B*C$, o bien $A*C*B$, o bien $B*A*C$.\par

\begin{wrapfigure}[5]{r}{0pt}
    \begin{tikzpicture}[>=stealth]
        \coordinate (A) at (-1.2,0);
        \coordinate (B) at (0,2.4);
        \coordinate (C) at (3.6,0);
    
        \draw[rred, line width=2.5pt, name path=AC] (A) -- (C);
        \draw[bblue, line width=2.5pt, name path=AB] (A) -- (B);
        \draw[black, line width=2.5pt, name path=CB] (C) -- (B);
    
        \filldraw[black] (A) circle (2pt) node[anchor=north east]{$A$};
        \filldraw[black] (B) circle (2pt) node[anchor=south west]{$B$};
        \filldraw[black] (C) circle (2pt) node[anchor= west]{$C$};
   
        \draw[->, gualda, line width=2.5pt, name path=l] (-1.25,2.25) -- node [black, above, near start]{$l$} (0.75,0.25);
    
        \path[name intersections={of=AB and l, by=D}];
        \filldraw[black] (D) circle (2pt) node[below=3pt,left=3pt]{$D$};
    \end{tikzpicture}
\end{wrapfigure}

\noindent \textbf{B4.} (Axioma de Pasch). Dados $A$,$B$, $C$ tres puntos no alineados, y una recta $l$ que no contiene a ninguno de ellos. Si $l$ contiene a un punto $D$ tal que $A*D*B$, entonces debe contener también un punto entre $A$ y $C$, o bien, un punto entre $B$ y $C$, pero no ambos.
\newpage


\end{document}

在此处输入图片描述

但是,我以前也遇到过这个问题,虽然不是 tikz 图片。以前我曾设法在插入图片之前使用 \raisebox 修复了这个问题,就像一位用户在这篇文章中所说的那样:

垂直移动 wrapfig 以部分侵占子部分标题

但问题是,除了 overleaf 检测到的所有错误之外,我的图表的箭头消失了。我尝试了该帖子答案中的其他解决方案,但没有奏效(\vspace 等)。

有人知道如何在包装图环境中垂直调整 tikz 图片而不消除图表的箭头吗?谢谢

答案1

用于\setlength\intextsep{0pt}消除包装图形的顶部和底部的多余空间。

\intextsep是放置在所有浮动上方和下方的垂直空间,而不仅仅是环绕图形。若要仅影响它们,请将此代码添加到前言中。

\usepackage{etoolbox}
\BeforeBeginEnvironment{wrapfigure}{\setlength{\intextsep}{0pt}}

A

消除包裹图形的顶部和底部多余的空间

这是最小可编译代码。(图中分配了 9 行)

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
    
\topmargin      = -0.56in
\textheight     =  8.60in
\textwidth      =  6.46in
\oddsidemargin  =  0.02in


%WRAPFIGURE
\usepackage{wrapfig}

%TIKZ
\usepackage{tikz}
\usepackage{tkz-euclide}

%COLORES
\usepackage{xcolor}
\definecolor{gualda}{RGB}{250,194,43}
\definecolor{rred}{RGB}{212,42,32}
\definecolor{bblue}{RGB}{14,99,142}


% ******************************************** added <<<<<<<<<<
\usepackage{etoolbox}
\BeforeBeginEnvironment{wrapfigure}{\setlength{\intextsep}{0pt}}
%****************************************************

\usepackage{kantlipsum}% ONLY for the dummy thext <<<

\begin{document}
    
    \noindent \textsc{Axiomas de Ordenación:}\par
    \noindent \textbf{B1.} Si $B$ está entre $A$ y $C$, (escrito como $A*B*C$), entonces $A$, $B$, $C$ son tres puntos distintos que pertenecen a la misma recta, y también $C*B*A$.\par
    
    \noindent \textbf{B2.} Para cualquiera dos puntos distintos $A$, $B$, existe un punto $C$ tal que $A*B*C$.\par
    
    \noindent \textbf{B3.} Dados $A$, $B$, $C$, tres puntos distintos en una recta, uno y sólo uno de ellos está entre los otros dos. Es decir: $A*B*C$, o bien $A*C*B$, o bien $B*A*C$.\par
    
    \begin{wrapfigure}[9]{r}{0pt}% changed <<<<<<<<<<
        \begin{tikzpicture}[>=stealth]
            \coordinate (A) at (-1.2,0);
            \coordinate (B) at (0,2.4);
            \coordinate (C) at (3.6,0);
            
            \draw[rred, line width=2.5pt, name path=AC] (A) -- (C);
            \draw[bblue, line width=2.5pt, name path=AB] (A) -- (B);
            \draw[black, line width=2.5pt, name path=CB] (C) -- (B);
            
            \filldraw[black] (A) circle (2pt) node[anchor=north east]{$A$};
            \filldraw[black] (B) circle (2pt) node[anchor=south west]{$B$};
            \filldraw[black] (C) circle (2pt) node[anchor= west]{$C$};
            
            \draw[->, gualda, line width=2.5pt, name path=l] (-1.25,2.25) -- node [black, above, near start]{$l$} (0.75,0.25);
            
            \path[name intersections={of=AB and l, by=D}];
            \filldraw[black] (D) circle (2pt) node[below=3pt,left=3pt]{$D$};
        \end{tikzpicture}
    \end{wrapfigure}
    
    \noindent \textbf{B4.} (Axioma de Pasch). Dados $A$,$B$, $C$ tres puntos no alineados, y una recta $l$ que no contiene a ninguno de ellos. Si $l$ contiene a un punto $D$ tal que $A*D*B$, entonces debe contener también un punto entre $A$ y $C$, o bien, un punto entre $B$ y $C$, pero no ambos.
    
    \noindent \textbf{B5.} (Dummy text). \kant[1]
    
\end{document}

C

相关内容