Como funciona?

Como funciona?

Quero recriar a seguinte tabela em látex

insira a descrição da imagem aqui

Aqui está meu 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} 

Responder1

Você pode desenhar com TikZ.

insira a descrição da imagem aqui

\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}

PS(Julho de 2020) Adiciono uma matrixversão da figura, um pouco semelhante ao código de Zarko.

insira a descrição da imagem aqui

\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}

Responder2

Também com tikz, mas agora com uso da matrixbiblioteca. Para setas, são empregados rótulos de borda arrows.metae 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}

insira a descrição da imagem aqui

Responder3

escreviduas macros( \valeure \fromtoessaautomaticamentecoloque a setaacimao caminho e o textoacimaa seta ouabaixodependendo se o caminho vai deda esquerda para direitaou não.

Sua vantagem é que permite adicionar setas a qualquer array escrito com um pacote especializado como array, tabularou qualquer outro pacote projetado para escrever arrays. Isso evita ter que reescrever o código de uma tabela já criada.

Por exemplo:

A seta está sempre posicionada nolado esquerdona direção do caminho construído. Quer dizer: acima quando o caminho vai deda esquerda para direitae abaixo caso contrário. O texto é posicionado automaticamente acima ou abaixo da seta.

exemplo

\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 e resultado (a ser compilado duas vezes):

captura de tela

\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}

A primeira macro chamada valeur:

marca o início e o fim da seta com um TikZ nodee exibe o valor contido na célula da tabela.

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

Tem dois argumentos:

  • o primeiro #1é onomedamos aonode
  • o segundo #2é ovalordisto node.

A segunda macro chamada \fromto:

Esta macro sempre posiciona a seta do lado esquerdo na direção do caminho. Acima quando o caminho vai deda esquerda para direitae abaixo caso contrário. Esta macro possui 4 argumentos:

  • o primeiro #1é opcional e permite transmitir opções do TikZ para o caminho<opções>
  • o segundo #2é o ponto de partida<de>
  • o terceiro #3é o ponto de chegada<para>
  • o quarto #4é o texto a ser posicionado<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?

O princípio é o seguinte: se o caminho forda esquerda para a direita, a seta e o texto são colocadosacimao caminho,de outra formaele é colocadoabaixo. Isso está feitosemquaisquer testes de posicionamento, mas usando opropriedades das rotações Isso evita o uso de 2 opções que são de fato inúteis:

  • um para a colocação das setas (para cima ou para baixo)
  • bem como uma opção de posicionamento do texto em relação a essas setas (acima ou abaixo).

Rotações

Na geometria, um ângulo positivo é uma rotação no sentido anti-horário. Um ângulo negativo é uma rotação no sentido horário.

ângulos

Da esquerda para a direita

Quando o caminho vai da esquerda para a direita (ou seja, do ponto A ao ponto B), os pontos localizados a 5 mm um do outro são girados conforme mostrado nesta figura. Isso cria um novo caminho 5 mm mais alto.

caminho mais alto

Da direita para esquerda

Quando o caminho vai da direita para a esquerda (ou seja, do ponto B ao ponto A), o mesmo é feito conforme mostrado nesta figura. Isso cria um novo caminho 5 mm mais baixo. caminho inferior

Em cada caso, oprimeirorotação épositivoe asegundo negativo. Essas rotações são realizadas com a calcbiblioteca. Para colocar o texto, utilizo a auto=leftopção que me permite colocar sempre o texto no mesmo lado de um caminho.

Responder4

Esta resposta é uma ligeira variação da solução da Black Mild. Em vez de usar uma matriz de nós Tikz, construo a matriz com {NiceMatrix}of nicematrix. Um nó PDF/Tikz é construído sob cada célula do array e eu desenho as setas como Black Mild faz.

\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}

Saída do código acima

informação relacionada