2

I am coming from this answer of mine:

https://tex.stackexchange.com/a/394628/120578

The code is:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}
%opening
\title{}
\author{}
\def\tikzmark#1{\begin{tikzpicture}[remember picture]\node(#1){};\end{tikzpicture}}


\makeatletter
\renewcommand\vec[1]{\ifdefined\xsh\relax\else\pgfmathsetmacro\xs{\f@size/3}\def\xsh{\xs pt}\fi\ifdefined\ysh\relax\else\pgfmathsetmacro\ys{\f@size/1.3}\xdef\ysh{\ys pt}\fi\tikzmark{VecStart}#1\tikzmark{VecStop}\begin{tikzpicture}[remember picture,overlay]\draw[->,>=stealth]($(VecStart)+(\xsh,\ysh)$)--($(VecStop)+(-\xsh,\ysh)$);\end{tikzpicture}\let\xsh=\undefined\let\ysh=\undefined}
\makeatother
\begin{document}

$\vec{AB}$

\xdef\xsh{5pt}
\xdef\ysh{14pt}
$$\displaystyle\int\vec{\displaystyle\frac{AB}{3}}dx$$

\end{document}

As you can see in the picture:

enter image description here

there is white space before and after the tikzmark.

Where did that space came from? If I change my tikzmark to:

\def\tikzmark#1{\tikz[remember picture]\node(#1){};}

I get exactly the same result.

A boundy of 50 will be offered after the acception of the answer (I want an explanation for the spaces and how can be avoided... I don't really care for other methods of the same result. Just want to understand where these spaces came from).

6
  • 3
    The short answer is [inner sep] which defaults to 0.333em. Commented Oct 5, 2017 at 2:48
  • Thank you @JohnKormylo... If you want you can make it an answer with some links or a command like \def\tikzmark#1{\tikz[inner sep=0,remember picture]\node(#1){};} that could solve the problem. I am already looking some things about this. But you gave me the help needed and I really would like an answer from you to accept.
    – koleygr
    Commented Oct 5, 2017 at 2:57
  • If I were doing it, I would abandon tikzmark and use a savebox instead. With extra effort you could even make it style sensitive. Commented Oct 5, 2017 at 3:01
  • @JohnKormylo: Yes, I know that... But I don't really care about this specific problem's solution... I just wanted to know about that separators of tikzpictures like "inner sep" or "outer sep". I use tikzpictures in several cases and could not find this info about the dimensions added in a tikzpicture... Thanks! Please... make your comment a simple answer. Not much more wanted...
    – koleygr
    Commented Oct 5, 2017 at 3:06
  • BTW, see tex.stackexchange.com/questions/371715/… for the use of \sbox in math. Commented Oct 5, 2017 at 3:14

1 Answer 1

7
+100

By using \coordinate instead of \node you take up no space. I also checked to see if the \hbox{} created by tikz had any effect, but couldn't tell by eye.

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}
%opening
\title{}
\author{}
\def\tikzmark#1{\begin{tikzpicture}[remember picture]\coordinate(#1);\end{tikzpicture}}


\makeatletter
\renewcommand\vec[1]{\ifdefined\xsh\relax
  \else
    \pgfmathsetmacro\xs{\f@size/3}%
    \def\xsh{\xs pt}%
  \fi
  \ifdefined\ysh\relax
  \else
    \pgfmathsetmacro\ys{\f@size/1.3}%
    \xdef\ysh{\ys pt}%
  \fi
  \tikzmark{VecStart}#1\tikzmark{VecStop}%
  \begin{tikzpicture}[remember picture,overlay]
    \draw[->,>=stealth]($(VecStart)+(\xsh,\ysh)$)--($(VecStop)+(-\xsh,\ysh)$);
  \end{tikzpicture}%
  \let\xsh=\undefined
  \let\ysh=\undefined}
\makeatother
\begin{document}

$\vec{AB}$

\xdef\xsh{0pt}%
\xdef\ysh{14pt}%
$$\displaystyle\int\vec{\displaystyle\frac{AB}{3}}dx$$
$$\displaystyle\int\null\frac{AB}{3}\null dx$$
$$\displaystyle\int\frac{AB}{3} dx$$

\end{document}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .