¿Cronoeventos grises parcialmente transparentes en mi línea de tiempo de Chronosys? ¿O utilizar cualquier otro paquete o método Plain-TeX, LaTeX, LuaLaTeX o incluso XeLaTex?

¿Cronoeventos grises parcialmente transparentes en mi línea de tiempo de Chronosys? ¿O utilizar cualquier otro paquete o método Plain-TeX, LaTeX, LuaLaTeX o incluso XeLaTex?

Mientras armaba una línea de tiempo "tradicional", encontré una manera de colorear mis cajas en cronosys, pero me gustaría que las cajas de eventos fueran parcialmente transparentes.

Esto permitiría un mejor seguimiento ocular, particularmente cuando los eventos están muy juntos, con diferentes profundidades de marca. Consulte la siguiente maqueta, hecha con Gimp, para saber cómo se vería.

También sería bueno si el texto estuviera mejor alineado con el cuadro de colores, observe la "s" en Darwin y la "m-" en Empire. Mi código kludge parece funcionar pero produce errores. **(Gracias a Kola B., y verGris contra gris)

El código está a continuación:

\documentclass[letterpaper,12pt,landscape]{article}
\usepackage[T1]{fontenc}
\usepackage{chronosys}

\begin{document}

\subsection*{Biographical cornerstones}
\startchronology[startyear=1850,stopyear=1950,height=0.5ex]

\chronoevent[textwidth=4.5cm,colorbox={grey!10},markdepth=100pt]%
{1882}{born in the Austrian part of the Austria-Hungarian Empire}
\chronoevent[textwidth=4cm,colorbox={grey!10},markdepth=40pt]%
{1885}{Publication of Darwin's Evolutionary Theory}

\stopchronology

\end{document}

Una muestra de lo anterior cuando se compila:

ingrese la descripción de la imagen aquí

Una burda maqueta de cómo podría verse esto:

Eldocumentación cronosicano menciona la transparencia como una opción, pero usa Tikz (para dibujar líneas) y colorbox (para eventos) y creo que la transparencia es posible.

Intenté lo siguiente, intentando usarcómo especificar colores transparentessegún la referencia de cfr:

\documentclass[letterpaper,12pt,landscape]{article}
\usepackage[T1]{fontenc}
\usepackage{chronosys}
\usepackage{transparent}

\begin{document}

\subsection*{Biographical cornerstones}
\startchronology[startyear=1850,stopyear=1950,height=0.5ex]

\chronoevent[textwidth=4.5cm,colorbox={gray!10},markdepth=100pt]%
{1881}{born in the Austrian part of the Austria-Hungarian Empire}
\chronoevent[textwidth=4cm,markdepth=40pt]%
{1885}{\transparent{0.3}\colorbox{blue}{Publication of Darwin's Evolutionary Theory}}

\stopchronology

\end{document}

Pero el resultado fue este:

ingrese la descripción de la imagen aquí

Cambiar la transparencia afecta el color del cuadro, haciéndolo más claro o más oscuro, pero no permite que el cuadro se vuelva más o menos transparente. Observe que el texto en el cuadro azul claro es muy tenue. El texto dentro del cuadro también se vuelve más claro o más oscuro cuando se modifica la "transparencia", un efecto secundario no deseado.

Indique si existe una solución utilizando otro paquete de línea de tiempo que no seachronosys También se me ocurrió que otra forma de lograr el objetivo sería hacer de alguna manera que las líneas que conectan los cuadros sean semitransparentes. La solucióndebería poder reflejar mes/día/año para eventos, con colocación horizontal automática de eventos en la línea de tiempo. Si alguien sabe cómo convertir la respuesta de percusse en un MWE, se lo agradecería. No importa si la respuesta es "plain-TeX" o "Tikz", o requiere compilación múltiple, o lo contrario, siempre y cuando funcione.

Bravo por @cfr por la siguiente solución que funciona perfectamente. Su solución crea un tipo de línea de tiempo diferente al que se puede crear con los paquetes LaTeX/TeX disponibles actualmente (al menos con los paquetes que yo conozco).

A pesar de la maravillosa solución presentada, sigue siendo útil tener una solución basada en "paquete", ya sea con Chronosys u otro paquete.

Respuesta1

Versión actual:cronos.
Por favor informe erroresen codeberg.

Aquí tienes una versión básica. Básicamente, el estilo chronosestablece la línea de tiempo básica. chronos dateLuego se puede utilizar para obtener el punto apropiado en esa línea de tiempo desde el cual soltar las líneas a los nodos del evento. La información de chronos datetambién se puede utilizar en el propio nodo. Aquí se utiliza para imprimir la fecha anterior al contenido del nodo.

He usado un bucle para agregar eventos, pero esto es solo para ahorrar escritura. Se podrían agregar uno por uno si se prefiere.

El esquema básico de la línea de tiempo debe presentarse así:

\begin{tikzpicture}
    [
      chronos={%
        <options>
      },
    ]
    <events and such on the timeline specified in the usual way>
\end{tikzpicture}

Las opciones para chronosson las siguientes:

  • width=<dimension>,
  • height=<dimension>,
  • start date=YYYY-MM-DD,
  • end date=YYYY-MM-DD,

Por defecto, la línea de tiempo es 1ptalta y 100mmamplia y las fechas de inicio y finalización son al comienzo del último milenio.

chronos date=YYYY-MM-DDLuego se puede utilizar en la imagen para ayudar a colocar cosas en la línea de tiempo. Por ejemplo, lo uso a continuación en un bucle de la siguiente manera donde \icontiene la fecha de la iteración actual, \jcontiene el texto y \kmantiene la distancia para desplazar el nodo debajo de la línea de tiempo.

\path [postaction={draw=gray, -{Triangle[width=1.5pt,reversed,length=.75pt,fill=gray]}}, chronos date/.expanded={\i}] ({(\thechronosthingdate-\thechronosstartdate)*\chronosunit pt},0) -- +(0,-\k) node [anchor=north, fill opacity=.75, fill=gray!25, draw=gray, rounded corners, font=\footnotesize\sffamily] {\chronosthingday/\chronosthingmonth/\chronosthingyear\\\j};

chronos datese alimenta \i, es decir, la fecha y esto establece ambos , \thechronosthingdatecada uno de y . El primero es un número que se puede utilizar para calcular en qué momento de la línea de tiempo se debe ubicar el evento. Esto debería ser en\chronosthingyear\chronosthingmonth\chronosthingday

({(\thechronosthingdate-\thechronosstartdate)*\chronosunit pt},0)

\thechronosstartdatecontiene un número correspondiente a la fecha de inicio de la línea de tiempo y \chronosunitmantiene la longitud en puntos permitidos para cada día. Esto se calcula cuando chronosse utiliza a partir de las fechas de inicio y finalización y el ancho. Se permite un desplazamiento de 10 puntos en cada extremo para que la primera fecha no esté justo al principio ni la última fecha al final.

\chronosthingday\chronosthingmonthy mantiene \chronosthingyearel día, mes y año establecidos chronos daterespectivamente y se puede utilizar en el contenido de nodos o etiquetas, si se desea.

Alimentando nuestro bucle con el siguiente conjunto de tripletas ( \i/\j/\k)

  • {1001-11-05}/{No fireworks}/10pt
  • {1002-07-04}/{No fireworks}/80pt
  • {1002-05-01}/{May Day}/50pt
  • {1002-06-21}/{Summer Solstice}/10pt

por lo tanto produce

cronos

Código completo:

\documentclass[tikz,multi,border=10pt]{standalone}
\usepackage{datenumber}
\usetikzlibrary{arrows.meta}
\newcounter{chronosstartdate}
\newcounter{chronosenddate}
\newcounter{chronosstartyear}
\newcounter{chronosendyear}
\newcounter{chronosyeardate}
\newcounter{chronosthingdate}
\pgfkeys{/pgf/number format,
  int detect,
  set thousands separator={},
}
\tikzset{
  chronos/.code={% https://tex.stackexchange.com/a/159856/ - Claudio Fiandrino
    \tikzset{%
      align=center,
      anchor=mid,
      /chronos/.cd,
      #1
    }%
    \setstartyear{\chronosstartyear}%
    \setmydatenumber{chronosstartdate}{\chronosstartyear}{\chronosstartmonth}{\chronosstartday}%
    \setmydatenumber{chronosenddate}{\chronosendyear}{\chronosendmonth}{\chronosendday}%
    \pgfmathsetmacro\chronosunit{(\chronoswidth-20pt)/(\thechronosenddate-\thechronosstartdate)}%
    \draw [line width=\chronosheight] (-10pt,0) coordinate (chronos pre) -- +(\chronoswidth,0) coordinate (chronos post);
    \coordinate (chronos start) at (0,0);
    \coordinate (chronos end) at ([xshift=-10pt]chronos post);
    \setcounter{chronosstartyear}{\chronosstartyear}%
    \setcounter{chronosendyear}{\chronosendyear}%
    \def\tempa{01}%
    \ifx\chronosstartmonth\tempa
      \ifx\chronosstartday\tempa
        \else\stepcounter{chronosstartyear}%
      \fi
      \else\stepcounter{chronosstartyear}%
    \fi
    \def\tempa{12}%
    \def\tempb{31}%
    \ifx\chronosendmonth\tempa
      \ifx\chronosendday\tempb
        \stepcounter{chronosendyear}%
      \fi
    \fi
    \foreach \i in {\thechronosstartyear,...,\thechronosendyear} {%
      \setmydatenumber{chronosyeardate}{\i}{01}{01}%
      \node [above, anchor=south] at ({(\thechronosyeardate-\thechronosstartdate)*\chronosunit pt},0) {\i}; }
  },
  chronos date/.code args={#1-#2-#3}{%
    \tikzset{%
      /chronos/.cd,
      thing year={#1},
      thing month={#2},
      thing day={#3},
    }%
    \setmydatenumber{chronosthingdate}{\chronosthingyear}{\chronosthingmonth}{\chronosthingday}%
  },
  /chronos/.search also={/tikz},
  /chronos/.cd,
  start year/.store in=\chronosstartyear,
  start month/.store in=\chronosstartmonth,
  start day/.store in=\chronosstartday,
  end year/.store in=\chronosendyear,
  end month/.store in=\chronosendmonth,
  end day/.store in=\chronosendday,
  thing year/.store in=\chronosthingyear,
  thing month/.store in=\chronosthingmonth,
  thing day/.store in=\chronosthingday,
  start date/.style args={#1-#2-#3}{%
    start year={#1},
    start month={#2},
    start day={#3},
  },
  end date/.style args={#1-#2-#3}{%
    end year={#1},
    end month={#2},
    end day={#3},
  },
  width/.store in=\chronoswidth,
  height/.store in=\chronosheight,
  start date=1001-10-01,
  end date=1003-06-14,
  width=100mm,
  height=1pt,
  chronos date=1850-01-01,
}
\begin{document}
\begin{tikzpicture}
  [chronos]
  \foreach \i/\j/\k in {{1001-11-05}/{No fireworks}/10pt,{1002-07-04}/{No fireworks}/80pt,{1002-05-01}/{May Day}/50pt,{1002-06-21}/{Summer Solstice}/10pt}
 {%
   \path [postaction={draw=gray, -{Triangle[width=1.5pt,reversed,length=.75pt,fill=gray]}}, chronos date/.expanded={\i}] ({(\thechronosthingdate-\thechronosstartdate)*\chronosunit pt},0) -- +(0,-\k) node [anchor=north, fill opacity=.75, fill=gray!25, draw=gray, rounded corners, font=\footnotesize\sffamily] {\chronosthingday/\chronosthingmonth/\chronosthingyear\\\j};
  }
\end{tikzpicture}
\end{document}

Respuesta2

Esta pregunta aparece de vez en cuando y pensé que alguien eventualmente entraría, encontraría las claves de TikZ y las cambiaría... Pero... ¿cuánto puede estar equivocado alguien?

De todos modos, el autor hace algunas cosas extremadamente conservadoras y no cede ante las pgfkeys. Porque ¿para qué facilitar las cosas? (Por cierto, un rasgo típico de los usuarios de TeX simple, aunque las pgfkeys también funcionan en TeX simple).

Entonces, siguiendo sus pasos (debe ser él), descubrí que el cuadro es un cuadro de color pero no un nodo TikZ. Entonces tus opciones son muy limitadas.

  • El autor lo arregla.
  • Comienzas a definir una opción como

     \csname !chrverif\endcsname\gdef\csname !chr@eventopacity\endcsname{}%
     \csname !chrverif\endcsname\gdef\csname !chreventdefaultopacity\endcsname{1}%
    

    luego coloque esta opción donde sea necesario y también encapsule la parte que dibuja el cuadro (comenzando por % %AFFICHAGEsi no me equivoco) con el grupo de transparencia. Entonces tendrás problemas extraños comopdflatex: el paquete transparente parece no funcionar

Con todo respeto, este paquete no llega a ninguna parte. Escriba su propio paquete TikZ simple y recuperará la funcionalidad en una semana o dos con pgfkeyssintaxis basada. La mitad del código del paquete reinventa pgfkeysel análisis de opciones (otro rasgo de los usuarios simples de TeX). Y otra cuarta parte es básicamente contenido de boxing unboxing.

Respuesta3

Para mí es más sencillo dibujar "pilares biográficos" en una imagen pura de TikZ que trabajar y trabajar con chronosys. Tienes tikzpictureun poco más de código, sin embargo, obtienes control total sobre la personalización del estilo de los nodos. Por ejemplo:

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

\begin{document}
\subsection*{Biographical cornerstones}
    \begin{center}
\begin{tikzpicture}[
    node distance = 0mm,
TN/.style args = {#1/#2}{% as Transparency Node
    fill=#1,
    fill opacity=#2,
    text opacity=1, align=flush left,
    inner sep=1mm, outer sep=0.25mm, below},
   TN/.default = gray!50/0.5,
      L/.style = {% as Line
    draw=gray, line width=1mm,
    {Bar[width=4mm,line width=0.4pt]}-{Bar[width=4mm,line width=0.4pt]}
                 }
                    ]
\draw[L]    ( 0,0)  coordinate (s)
                    node[above=2mm] {1850} -- + 
            (10,0)  node[above=2mm] {1950};
\draw (3.1,0) -- + (0,-2.4)
        node (e1)   [TN]              {1881}
        node (e1a)  [TN,below=of e1]  {born in the Austrian part\\
                                       of the Austria-Hungarian\\
                                       Empire};
\draw (3.5,0) -- + (0,-0.4) 
        node (e2)   [TN=blue!30/0.3]  {1885}
        node (e2a)  [TN=blue!30/0.7,
                     below=of e2]    {Publication of Darwin's\\
                                      Evolutionary Theory};
    \end{tikzpicture}
    \end{center}
\end{document}

Esto da:

ingrese la descripción de la imagen aquí

información relacionada