- Questo topic ha 0 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 19 anni, 11 mesi fa da .
-
Topic
-
Ho creato un package/template per documenti aziendali.
Ora vorrei creare una tabella in modo automatico. Se il numero di righe totali e’ 3, la prima riga va riempita con il contenuto della macro \RigaA, la seconda con \RigaB, la terza con \RigaC.
A prima vista e’ un problema inesistente: costruisco la tabella nel documento indicando tutte le righe esplicitamente.
Tuttavia essendo cocciuto mi piacerebbe risolvere il problema a livello di template, limitandomi ad aggiungere nel documento, quando servono, ulteriori macro del tipo \RigaD, \RigaE ecc.. Il fatto e’ che il documento deve circolare fra diversi revisori che non sanno quasi niente di Latex e il massimo sforzo che posso chiedere loro e’ che ciascuno di loro aggiunga nel documento una cosa semplicissima del tipo`\newcommand{\RigaE}{commento_dell_e-simo_revisore}`
La conseguenza della mia ostinazione, pero’, e’ che non so a priori quante righe ci saranno.
Ho provato il codice qui sotto ma non mi funziona. Ho messo tutto assieme solo per brevita’. Ma come ho detto solo i \newcommad{\RigaX}{} vanno nel documento, il resto nel package/template`
\documentclass{article}
\usepackage{ifthen}
\newcounter{i}
\newcommand{\RigaA}{Sono la prima riga}
\newcommand{\RigaB}{Sono la seconda riga}
\newcommand{\RigaC}{Sono la terza riga}
\newcommand{\mioCmd}[1]{\csname Riga\Alph{#1}\endcsname}%produce i \RigaA, \RigaB ecc.
\begin{document}\begin{tabular}{c}\hline
\whiledo{\NOT\equal{\mioCmd{i}}{\relax}}{\mioCmd{i}\stepcounter{i}\\}%
\end{tabular}\end{document}
`Visto che la macro \RigaD non e’ definita mi aspetterei che il risultato sia una tabella con tre righe. Ma si incasina con \csname e da un sacco di errori.
Ho utilizzato \equal e non \isundefined perche’ un comando costruito con \csname se non e’ definito, viene definito da Latex stesso, come \relax.Se c’e’ qualcuno che mi aiuta….
Grazie
- Devi essere connesso per rispondere a questo topic.