Wie funktioniert es?

Wie funktioniert es?

Ich möchte die folgende Tabelle auf Latex neu erstellen

Bildbeschreibung hier eingeben

Hier ist mein 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} 

Antwort1

Sie können mit TikZ zeichnen.

Bildbeschreibung hier eingeben

\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(Juli 2020) Ich füge eine matrixVersion der Abbildung hinzu, die Zarkos Code etwas ähnelt.

Bildbeschreibung hier eingeben

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

Antwort2

Auch mit tikz, jetzt aber mit Verwendung der matrixBibliothek. Für Pfeile werden Kantenbeschriftungen verwendet arrows.metaund quotedBibliotheken:

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

Bildbeschreibung hier eingeben

Antwort3

Ich hab geschriebenzwei Makros( \valeurund \fromtodasautomatischPlatziere den Pfeilüberder Pfad und der Textüberder Pfeil oderuntenje nachdem, ob der Weg vonlinks nach rechtsoder nicht.

arraySein Vorteil besteht darin, dass Sie Pfeile zu jedem Array hinzufügen können , das mit einem spezialisierten Paket wie tabularoder einem anderen Paket zum Schreiben von Arrays geschrieben wurde. Dadurch müssen Sie den Code einer bereits erstellten Tabelle nicht neu schreiben.

Zum Beispiel:

Der Pfeil steht immer auf derlinke Seitein Richtung des gebauten Pfades. Das heißt: oben, wenn der Pfad vonlinks nach rechtsund andernfalls darunter. Der Text wird automatisch über oder unter dem Pfeil positioniert.

Beispiel

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

Code und Ergebnis (muss zweimal kompiliert werden):

Bildschirmfoto

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

Das erste Makro heißt valeur:

markiert den Anfang und das Ende des Pfeils mit einem TikZ nodeund zeigt den in der Tabellenzelle enthaltenen Wert an.

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

Es gibt zwei Argumente:

  • Das erste #1ist dasNameWir geben demnode
  • das zweite #2ist dasWertvon diesem node.

Das zweite Makro heißt \fromto:

Dieses Makro positioniert den Pfeil immer auf der linken Seite in Richtung des Pfades. Oben, wenn der Pfad vonlinks nach rechtsund andernfalls weiter unten. Dieses Makro hat 4 Argumente:

  • Die erste #1ist optional und ermöglicht die Übermittlung von TikZ-Optionen an den Pfad<Optionen>
  • der zweite #2ist der Ausgangspunkt< von>
  • der dritte #3ist der Ankunftspunkt< bis>
  • der vierte #4ist der zu positionierende Text< text>
\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};}

Wie funktioniert es?

Das Prinzip ist folgendes: Wenn der Wegvon links nach rechts, der Pfeil und der Text werden platziertüberder Weg,ansonstenes wird platziertunten. Das ist fertigohnekeine Positionierungstests, sondern mit demEigenschaften der Rotationen Dadurch wird die Verwendung von zwei Optionen vermieden, die de facto nutzlos sind:

  • eine für die Platzierung der Pfeile (nach oben oder unten)
  • sowie eine Option für die Platzierung des Textes relativ zu diesen Pfeilen (über oder unter).

Rotationen

In der Geometrie ist ein positiver Winkel eine Drehung gegen den Uhrzeigersinn. Ein negativer Winkel ist eine Drehung im Uhrzeigersinn.

Winkel

Von links nach rechts

Wenn der Pfad von links nach rechts verläuft (also von Punkt A nach Punkt B), werden die 5 mm voneinander entfernten Punkte wie in dieser Abbildung gezeigt gedreht. Dadurch wird ein neuer Pfad erstellt, der 5 mm höher liegt.

höherer Weg

Von rechts nach links

Wenn der Pfad von rechts nach links verläuft (also von Punkt B nach Punkt A), wird dasselbe wie in dieser Abbildung gezeigt gemacht. Dadurch wird ein neuer Pfad 5 mm tiefer erstellt. unterer Pfad

In jedem FallErsteRotation istpositivund daszweites Negativ. Diese Drehungen werden mit der calcBibliothek durchgeführt. Um den Text zu platzieren, verwende ich die auto=leftOption, die es mir ermöglicht, den Text immer auf der gleichen Seite eines Pfades zu platzieren.

Antwort4

Diese Antwort ist eine leichte Variation der Lösung von Black Mild. Anstatt eine Tikz-Matrix von Knoten zu verwenden, konstruiere ich das Array mit {NiceMatrix}. nicematrixUnter jeder Zelle des Arrays wird ein PDF/Tikz-Knoten konstruiert und ich zeichne die Pfeile wie 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}

Ausgabe des obigen Codes

verwandte Informationen