¿Como funciona?

¿Como funciona?

Quiero recrear la siguiente tabla en látex.

ingrese la descripción de la imagen aquí

Aqui esta mi MWE

\documentclass{article} 
\usepackage{colortbl}

\begin{document}
\begin{table}[h]
 \begin{tabular}{|>{\columncolor[gray]{.8}}c|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|}
   \hline
  \footnotesize{ $x$ } & 0.900 & 0.990 & 0.999 & 1.000 & 1.001 & 1.010 & 1.100 \\ \hline
  \footnotesize{ $f(x)$} & 1.810 & 1.980 & 1.998 & 2.000 & 2.002 & 2.020 & 2.210 \\ \hline
 \end{tabular}
 \end{table}
\end{document} 

Respuesta1

Puedes dibujar con TikZ.

ingrese la descripción de la imagen aquí

\documentclass[tikz,border=5mm]{standalone}
% put a row of 8 elements
\newcommand{\putrow}[9]{
\path (0,#1) node{#2}
++(0:1) node{#3} ++(0:1) node{#4}
++(0:1) node{#5} ++(0:1) node{#6} 
++(0:1) node{#7} ++(0:1) node{#8} ++(0:1) node{#9};
}

\begin{document}
\begin{tikzpicture}[xscale=1.4,yscale=.6]
\begin{scope}[shift={(-.5,.5)}]
\fill[cyan!30] (0,0) rectangle +(1,-2);
\draw (0,0) grid (8,-2);
\end{scope}
\begin{scope}[-stealth,magenta,shorten >=.5pt,
every node/.style={midway,scale=.8}]
\draw[shift={(90:1)}] (1,0)--(4,0)    node[above]{$x$ approaches $1$};
\draw[shift={(90:1)}] (7,0)--(4,0)    node[above]{$x$ approaches $1$};
\draw[shift={(-90:2)}] (1,0)--(4,0)   node[below]{$f(x)$ approaches $2$};
\draw[shift={(-90:2)}] (7,0)--(4,0)   node[below]{$f(x)$ approaches $2$};
\end{scope}

\putrow{0}{$x$}{0.900}{0.990}{0.999}{1.000}{1.001}{1.010}{1.100}
\putrow{-1}{$f(x)$}{1.810}{1.980}{1.998}{2.000}{2.002}{2.020}{2.210}
\end{tikzpicture}
\end{document}

PD(Julio 2020) Agrego una matrixversión de la figura, algo similar al código de Zarko.

ingrese la descripción de la imagen aquí

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,
nodes={draw,minimum height=4ex,minimum width=3.3em,anchor=center},
column sep=-\pgflinewidth,
row sep=-\pgflinewidth,
column 1/.style ={nodes={fill=orange!30}}
]{
x   & 0.900 & 0.990 & 0.999 & 1.000 & 1.001 & 1.010 & 1.100 \\ 
f(x)& 1.810 & 1.980 & 1.998 & 2.000 & 2.002 & 2.020 & 2.210 \\
};

\def\d{.6}
\begin{scope}[-stealth,orange,shorten >=.5pt,
every node/.style={midway,scale=.8}]
\draw ([shift={(90:\d)}]m-1-2.center)--([shift={(90:\d)}]m-1-5.center)    
node[above]{$x$ approaches $1$};
\draw ([shift={(90:\d)}]m-1-8.center)--([shift={(90:\d)}]m-1-5.center)    
node[above]{$x$ approaches $1$};
\draw ([shift={(-90:\d)}]m-2-2.center)--([shift={(-90:\d)}]m-2-5.center)   
node[below]{$f(x)$ approaches $2$};
\draw ([shift={(-90:\d)}]m-2-8.center)--([shift={(-90:\d)}]m-2-5.center)   
node[below]{$f(x)$ approaches $2$};
\end{scope}
\end{tikzpicture}
\end{document}

Respuesta2

También con tikz, pero ahora con uso de la matrixbiblioteca. Para las flechas, se emplean etiquetas de borde arrows.metay quotedbibliotecas:

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows.meta,
                matrix,
                quotes
                }

\begin{document}
    \begin{tikzpicture}[
every edge/.style = {draw, purple, -{Straight Barb[angle=60:2pt 3]}, semithick}, shorten >=1pt,
every edge quoetes/.style = {font=\footnotesize}
                        ]
\matrix (m) [matrix of math nodes,
             nodes = {draw, minimum height=4ex, minimum width=3.3em, 
                      inner sep=0pt, outer sep=0pt, anchor=center},
             column sep=-\pgflinewidth,
             row sep=-\pgflinewidth,
             column 1/.append style = {nodes={fill=cyan!30}}
            ]
{
 x   & 0.900 & 0.990 & 0.999 & 1.000 & 1.001 & 1.010 & 1.100    \\ 
f(x) & 1.810 & 1.980 & 1.998 & 2.000 & 2.002 & 2.020 & 2.210    \\
};
\draw   (m-1-2.north |- m.north) edge["$x$ approaches $1$"] (m-1-5.north |- m.north)
        (m-1-8.north |- m.north) edge["$f(x)$ approaches $1$" '] (m-1-5.north |- m.north)
        (m-1-2.south |- m.south) edge["$x$ approaches $2$" '] (m-1-5.north |- m.south)
        (m-1-8.south |- m.south) edge["$f(x)$ approaches $2$"] (m-1-5.north |- m.south);
    \end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

escribídos macros( \valeury \fromtoesoautomáticamentecoloca la flechaarribael camino y el textoarribala flecha oabajodependiendo de si el camino va desdede izquierda a derechaO no.

Su ventaja es que le permite agregar flechas a cualquier matriz escrita con un paquete especializado como array, tabularo cualquier otro paquete diseñado para escribir matrices. Esto evita tener que reescribir el código de una tabla ya creada.

Por ejemplo:

La flecha siempre está situada en ellado izquierdoen dirección al camino construido. Es decir: arriba cuando el camino va dede izquierda a derechay debajo en caso contrario. El texto se coloca automáticamente encima o debajo de la flecha.

ejemplo

\documentclass{article} 
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta}

\newcommand{\valeur}[2]{
    \tikz[remember picture] \node[inner sep=0pt,anchor=center](#1){#2};}
\newcommand{\fromto}[4][]{
\tikz[remember picture,overlay,auto=left,>={Stealth[length=5pt, inset=1pt,sep]}]
    \path[draw,thick,#1]($(#2.center)!5mm!90:(#3.center)$)--($(#3.center)!5mm!-90:(#2.center)$)node[midway]{#4};}

\begin{document}

 \begin{tikzpicture}[remember picture]
 \node[] (A)at(0,0){A};
 \node[] (B) at (8,0){B};
 \draw[densely dotted](A)--(B)node[midway,fill=white]{path from A to B};
 \end{tikzpicture}
 
\fromto[align=center,dashed,->,blue] {A}{B}{from A to B:\\ the arrow is \textbf{above} the path A--B \\ the text is \textbf{above} the arrow}
\fromto[align=center,dashed,->,red] {B}{A}{from B to A:\\ line arrow is \textbf{below} the path A--B,\\ the text is \textbf{below} the arrow}

\end{document}

Código y resultado (para compilar dos veces):

captura de pantalla

\documentclass{article} 
\usepackage{colortbl}
\usepackage{tikz}
\definecolor{myviolet}{RGB}{243,29,143}
\usetikzlibrary{calc,arrows.meta}

\newcommand{\valeur}[2]{
    \tikz[remember picture] \node[inner sep=0pt,anchor=center](#1){#2};}
\newcommand{\fromto}[4][]{
\tikz[remember picture,overlay,auto=left,>={Stealth[length=5pt, inset=1pt,sep]}]
    \path[draw=myviolet,thick,#1]
    ($(#2.center)!5mm!90:(#3.center)$)--($(#3.center)!5mm!-90:(#2.center)$)node[midway,myviolet,font=\bf]{#4};}

\begin{document}
\begin{table}[h]
 \begin{tabular}{|>{\columncolor[gray]{.8}}c|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|m{1cm}|}
   \hline
  \footnotesize{ $x$ } & \valeur{a1}{0.900} & 0.990 & 0.999 & \valeur{b1}{1.000} & 1.001 & 1.010 & \valeur{c1}{1.100} \\ \hline
  \footnotesize{ $f(x)$} & \valeur{a2}{1.810} & 1.980 & 1.998 & \valeur{b2}{2.000} & 2.002 & 2.020 & \valeur{c2}{2.210} \\ \hline
 \end{tabular}
 \end{table}
 
\fromto[->] {a1}{b1}{$x$ approaches 1.}
\fromto[<-] {b1}{c1}{$x$ approaches 1.}
\fromto[<-] {b2}{a2}{$f(x)$ approaches 2.}
\fromto[->] {c2}{b2}{$f(x)$ approaches 2.}

\end{document}

La primera macro llamada valeur:

marca el principio y el final de la flecha con un TikZ nodey muestra el valor contenido en la celda de la tabla.

\newcommand{\valeur}[2]{
        \tikz[remember picture] \node[inner sep=0pt,anchor=center](#1){#2};}

Tiene dos argumentos:

  • el primero #1es elnombrele damos alnode
  • el segundo #2es elvalorde esta node.

La segunda macro llamada \fromto:

Esta macro siempre posiciona la flecha en el lado izquierdo en la dirección del camino. Arriba cuando el camino va desdede izquierda a derechay debajo en caso contrario. Esta macro tiene 4 argumentos:

  • el primero #1es opcional y permite transmitir opciones de TikZ al camino<opciones>
  • el segundo #2es el punto de partida<de>
  • el tercero #3es el punto de llegada<a>
  • el cuarto #4es el texto a posicionar<texto>
\newcommand{\fromto}[4][]{
\tikz[remember picture,overlay,auto=left,>={Stealth[length=5pt, inset=1pt,sep]}]
    \path[draw=myviolet,thick,#1]
    ($(#2.center)!5mm!90:(#3.center)$)--($(#3.center)!5mm!-90:(#2.center)$)node[midway,myviolet,font=\bf]{#4};}

¿Como funciona?

El principio es el siguiente: si el camino vade izquierda a derecha, se colocan la flecha y el textoarribael camino,de lo contrarioesta colocadoabajo. Esto esta hechosincualquier prueba de posicionamiento, pero usando elpropiedades de las rotaciones Esto evita el uso de 2 opciones que de facto son inútiles:

  • uno para la colocación de las flechas (arriba o abajo)
  • así como una opción para la ubicación del texto en relación con estas flechas (arriba o abajo).

Rotaciones

En geometría, un ángulo positivo es una rotación en sentido antihorario. Un ángulo negativo es una rotación en el sentido de las agujas del reloj.

anglos

De izquierda a derecha

Cuando el camino va de izquierda a derecha (es decir, del punto A al punto B), los puntos ubicados a 5 mm entre sí se rotan como se muestra en esta figura. Esto crea un nuevo camino 5 mm más alto.

camino más alto

De derecha a izquierda

Cuando el camino va de derecha a izquierda (es decir, del punto B al punto A), se hace lo mismo como se muestra en esta figura. Esto crea un nuevo camino 5 mm más bajo. camino inferior

En cada caso, elprimerola rotación espositivoy elsegundo negativo. Estas rotaciones se realizan con la calcbiblioteca. Para colocar el texto, uso la auto=leftopción que me permite colocar siempre el texto en el mismo lado de un camino.

Respuesta4

Esta respuesta es una ligera variación de la solución de Black Mild. En lugar de usar una matriz de nodos Tikz, construyo la matriz con {NiceMatrix}of nicematrix. Se construye un nodo PDF/Tikz debajo de cada celda de la matriz y dibujo las flechas como lo hace Black Mild.

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

$\begin{NiceMatrix}[hvlines,code-before = \columncolor{orange!30}{1}]
x   & 0.900 & 0.990 & 0.999 & 1.000 & 1.001 & 1.010 & 1.100 \\ 
f(x)& 1.810 & 1.980 & 1.998 & 2.000 & 2.002 & 2.020 & 2.210 
\CodeAfter
  \begin{tikzpicture}[-stealth,orange,shorten >=.5pt,
                      every node/.style={midway,scale=.8}]
  \def\d{.6}
  \draw ([shift={(90:\d)}]1-2.center)--([shift={(90:\d)}]1-5.center)    
  node[above]{$x$ approaches $1$};
  \draw ([shift={(90:\d)}]1-8.center)--([shift={(90:\d)}]1-5.center)    
  node[above]{$x$ approaches $1$};
  \draw ([shift={(-90:\d)}]2-2.center)--([shift={(-90:\d)}]2-5.center)   
  node[below]{$f(x)$ approaches $2$};
  \draw ([shift={(-90:\d)}]2-8.center)--([shift={(-90:\d)}]2-5.center)   
  node[below]{$f(x)$ approaches $2$};
  \end{tikzpicture}
\end{NiceMatrix}$

\end{document}

Salida del código anterior

información relacionada