- Questo topic ha 4 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 6 anni, 2 mesi fa da .
-
Topic
-
Ho scritto una funzione che distribuisce in orizzontale gli elementi passati in un parametro.Esempio minimale:
`
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}\newcommand{\distribuzione}[3]{% Distribuzione di elementi su un asse
\def \dimx{#1}
\def \numpunti{#2}
\def \labpunti{#3}
\begin{tikzpicture}
\pgfmathparse{\dimx*2 / (\numpunti+1)} \let\largx\pgfmathresult
\foreach \li [count = \i] in \labpunti{
\draw (\i*\largx-\dimx, -.2) — (\i*\largx-\dimx, .2)
node [above] {\(\li\)};}
\draw [->] (-\dimx, 0) — (\dimx, 0);
\end{tikzpicture}
}\begin{document}
\distribuzione{6}{5}{a, b, c, d, e}
\end{document}
`
Fa quello che voglio, ma io vorrei semplificare la funzione passandole solo il primo e l’ultimo parametro, infatti il secondo non è altro che il numero di elementi contenuti nella lista seguente.
Sarebbe più logico chiamare la funzione distribuzione passandole solo il primo e l’ultimo parametro:`
\distribuzione{6}{a, b, c, d, e}
`e la funzione dovrebbe arrangiarsi a trovare quanti elementi sono contenuti nel secondo parametro.
Ho cercato in Internet, ma ho trovato soluzioni che mi sono sembrate contorte.
Non esiste in LaTeX / Tikz una funzione predefinita che data una lista separata da virgole, restituisca la sua lunghezza?
C’è un modo semplice per farlo?
Grazie per l’attenzione e per le eventuali indicazioni.
Daniele
- Devi essere connesso per rispondere a questo topic.