¿Cómo alinear verticalmente las etiquetas de una línea de tiempo en la parte inferior?

¿Cómo alinear verticalmente las etiquetas de una línea de tiempo en la parte inferior?

¿Cómo se pueden alinear verticalmente las etiquetas en la siguiente línea de tiempo, de modo que parezca que todas están ubicadas en una línea base (es decir, alineadas verticalmente en la parte inferior)? Por ejemplo, \tauy \tau+1aún no están alineados verticalmente en la parte inferior. Entonces quiero usar la ubicación en \xpero la alineación en la dirección y debe ser variable (no fijada en -2mmeste momento)

\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[thick,x=0.5cm]
  \newcommand*{\mylabshift}{0.25}
  \draw[->] (-1,0) -- (27,0) node[below=2mm]{Time};
  \foreach \x in {0,1, 4,5, 9,10, 14, 19,20, 25}
  \draw(\x, 1.2mm) -- (\x, -1.2mm);
  \foreach \x/\what in {0/0, 1/1, 2.5/\dots, 4/\tau, 5+\mylabshift/\tau+1, 7.25/\dots, 9/t, 10+\mylabshift/t+1, 12.25/\dots, 14/t+h, 19-3*\mylabshift/T-h, 20+5*\mylabshift/T-h+1, 25/T}
  \node[below] at (\x,-2mm) {$\what$};
\end{tikzpicture}
\end{document}

Respuesta1

ACTUALIZAR

Defina timelineel entorno y utilícelo \event<*>[* or num or dimen]{num or dimen}{text}para agregar eventos.

  • Primero *envolverá el texto con $...$.
  • El argumento opcional es la coordenada x del tick, utilícelo *para no establecer ningún tick. Por defecto es el mismo que el siguiente argumento.
  • El primer argumento obligatorio es la coordenada x del nodo del evento.
  • El segundo argumento obligatorio es el texto.
\documentclass[tikz, margin=1cm]{standalone}

\makeatletter
\newtoks\t@event@toka%
\newtoks\t@event@tokb%
\newif\ifevent@math%
\newif\ifevent@comp%
\newenvironment{timeline}[1][0.25]{%
  \begingroup%
  \let\event@tmpa\pgfutil@empty%
  \let\event@tmpb\pgfutil@empty%
  \let\event@tmpc\pgfutil@empty%
  \let\event@tmpd\pgfutil@empty%
  \edef\event@min{\the\maxdimen}%
  \edef\event@max{-\event@min}%
  \def\event{%
    \pgfutil@ifnextchar-%
      {\event@compfalse\event@}%
      {\event@comptrue\event@-}%
  }%
  \def\event@-{%
    \pgfutil@ifnextchar*%
      {\event@mathtrue\event@@}%
      {\event@mathfalse\event@@*}%
  }%
  \def\event@@*{%
    \pgfutil@ifnextchar[\event@@@{\@dblarg{\event@@@}}%
  }%
  \def\event@@@[##1]##2##3{%
    \edef\event@tmpb{%
      \noexpand\node[anchor=base] at (##2, -7mm)%
        {\ifevent@math$##3$\else##3\fi};%
      \ifx##1*\else%
        \noexpand\draw (##1, -1.2mm) -- (##1, 1.2mm);%
      \fi%
    }%
    \t@event@toka=\expandafter{\event@tmpa}%
    \t@event@tokb=\expandafter{\event@tmpb}%
    \edef\event@tmpa{\the\t@event@toka\the\t@event@tokb}%
    \ifx##1*\else%
      \event@set@axismax{##1}%
    \fi%
    \event@set@axismax{##2}%
  }%
  \def\event@set@axismax##1{%
    \tikz@checkunit{##1}%
    \iftikz@isdimension%
      \pgf@process{\pgfpoint{##1}{0pt}}%
    \else%
      \pgf@process{\pgfpointxy{##1}{0}}%
    \fi%
    \pgfmathparse{\the\pgf@x}%
    \let\event@cur\pgfmathresult%
    \pgfmathsetmacro\event@min{%
      \event@cur < \event@min ? \event@cur : \event@min}%
    \pgfmathsetmacro\event@max{%
      \event@cur > \event@max ? \event@cur : \event@max}%
  }%
}{%
  \t@event@toka=\expandafter{\event@tmpa\\}%
  \edef\event@tmpa{%
    \noexpand\matrix (a) [row sep=5pt] {%
      \noexpand \draw[->] (\event@min pt - 1cm, 0) -- (\event@max pt + 1cm, 0);%
      \the\t@event@toka%
    };%
  }%
  \event@tmpa%
  \endgroup%
}
\makeatother

\begin{document}

\begin{tikzpicture}[thick,x=0.5cm]
  \newcommand*{\mylabshift}{0.25}
  \begin{timeline}
    \event*{0}{0}
    \event*{1}{1}
    \event*[*]{2.5}{\cdots}
    \event*{4}{\tau}
    \event*[5]{5+\mylabshift}{\tau+1}
    \event*[*]{7.25}{\cdots}
    \event*{9}{t}
    \event*[10]{10+\mylabshift}{t+1}
    \event*[*]{12.25}{\cdots}
    \event*{14}{t+h}
    \event*[19]{19-3*\mylabshift}{T-h}
    \event*[20]{20+5*\mylabshift}{T-h+1}
    \event*{25}{T}
  \end{timeline}
\end{tikzpicture}
\end{document}

Respuesta original

Úselo anchor= basepara alinear el texto. ingrese la descripción de la imagen aquí

\documentclass{scrartcl}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[thick,x=0.5cm]
  \newcommand*{\mylabshift}{0.25}
  \draw[->] (-1,0) -- (27,0) node[anchor=base, yshift=-7mm]{Time};
  \foreach \x in {0,1, 4,5, 9,10, 14, 19,20, 25}
  \draw(\x, 1.2mm) -- (\x, -1.2mm);
  \foreach \x/\what in {
    0/0, 1/1, 2.5/\dots, 4/\tau, 5+\mylabshift/\tau+1, 7.25/\dots, 9/t,
    10+\mylabshift/t+1, 12.25/\dots, 14/t+h, 19-3*\mylabshift/T-h,
    20+5*\mylabshift/T-h+1, 25/T
  }
    \node[anchor=base] at (\x,-7mm) {$\what$};
\end{tikzpicture}

\end{document}

información relacionada