- Questo topic ha 17 risposte, 6 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 7 mesi fa da
ivan.
-
CreatoreTopic
-
8 Gennaio 2014 alle 12:43 #91289::
Buon pomeriggio a tutti.
Ho il seguente problema: devo scrivere ed organizzare un manuale e delle procedure su tre differenti “libri/volumi” diciamo libro1, libro2 e libro3. Ho la necessità di avere dei riferimenti dinamici dall’uno all’altro e cioè: nel libro1 c’è un rimando a un paragrafo/capitolo che si tropva nel libro2 e così via. Esiste secondo voi questa possibilità?Potrei farlo manualmente però diventa complicatissimo perchè i riferimenti incrociati sono davvero tanti (oltre un centinaio)…
Grazie.
-
CreatoreTopic
-
AutoreRisposte
-
-
8 Gennaio 2014 alle 13:42 #91290::
quattropezze” post=90877Buon pomeriggio a tutti.
Ho il seguente problema: devo scrivere ed organizzare un manuale e delle procedure su tre differenti “libri/volumi” diciamo libro1, libro2 e libro3. Ho la necessità di avere dei riferimenti dinamici dall’uno all’altro e cioè: nel libro1 c’è un rimando a un paragrafo/capitolo che si tropva nel libro2 e così via. Esiste secondo voi questa possibilità?Potrei farlo manualmente però diventa complicatissimo perchè i riferimenti incrociati sono davvero tanti (oltre un centinaio)…
Grazie.
Ciao.
Mi ricordo dell’esistenza di un pacchetto che fa al caso tuo, ma adesso non me ne ricordo il nome…
R.
Ps.
Controlla gli accenti perchè -> perché
-
8 Gennaio 2014 alle 14:56 #91291
-
8 Gennaio 2014 alle 15:41 #91292::
Il pacchetto xr certamente fa al caso tuo, ma per un testo diviso in tre tomi, forse, i rinvii si possono fare anche usando accortamente il gioco di \includeonly e \include. Mantieni tutti i riferimenti e la numerazione di pagine, capitoli note, figure, tabelle, equazioni e via di questo passo. Io trovo questa procedura molto efficace, ma ovviamente non sostituisce completamente quello che si può fare con xr, come xr non sostituisce completamente quello che si può fare con \includeonly e \include; ci sono dei punti di sovrapposizione, ma non coincidono.Un unico main file include tutti i capitoli, ma, sempre scrivendo un solo nome di file in ogni riga, una volta compilato tutto il volume i vari file .aux dei vari capitoli contengono tutti i dati per i riferimenti incrociati; dopo basta commentare via via in \includeonly solo le righe del secondo volume e del terzo volume, compilare, ed ecco che il primo volume ha tutti i riferimenti incrociati corretti anche verso gli altri due volumi; poi ripeti commentando le righe che si riferiscono al primo e al terzo volume, e ripeti fino ad aver fatto i tre volumi. Ovviamente fra una compilazione e l’altra devi avere l’accortezza di cambiare nome al file pdf appena composto, affinché non venga sovrascritto con il testo del volume successivo.
Ho la sensazione che per un lavoro come il tuo, di uno stesso documento diviso in più spezzoni, il procedimento che ti ho indicato sia più farraginoso, che non il procedimento proposto da xr, ma ne hai il pieno controllo e non devi aprire gli altri documenti per conoscere i loro \label a cui fare riferimento nel tuo documento.
In un caso come il tuo, io preferirei usare il procedimento che ti ho descritto sopra. L’ho fatto per la Guida GuIT in tre tomi e non ho avuto nessun problema. Ho avuto l’accortezza di replicare in tutti e tre i volumi sia la front matter sia la back matter, in modo che sia tutto collegato e in particolare con ogni volume disponi dell’indice generale dell’intera “opera”; così come hai gli indici analitici, la bibliografia, eccetera sempre completi in ogni volume; anche il frontespizio è diverso epr ogni volume, basta agire con accortezza con i tre frontespizi inseriti in tre file distinti e includere il frontespizio giusto con ogni parte dell’intero testo che includi; certo ci vuole un po’ di attenzione, ed è difficile da automatizzare, ma è alla portata di chiunque. Con xr queste cose non si possono fare, ance se non sarebbe difficile farle con altrettanta attenzione rivolta a dettagli diversi.
Il gioco di \includeonly è documentato nell’Arte di scrivere con LaTeX, nella Guida GuIT, nella guida tematica Il LaTeX Reference Manual commentato, tuti scricabili dalla sezione Documentazione di questo sito.
-
9 Gennaio 2014 alle 10:35 #91293
-
9 Gennaio 2014 alle 10:45 #91294::
Grazie infinite a tutti per l’aiuto.
Poichè non sono proprio una cima nell’utilizzo di Latex comincerò a studiare la documentazione del pacchetto xr (speriamo non sia solo in inglese, ma …) perchè con l’altro metodo (che credo sia più elegante dal punto di vista della programmazione…) credo che farei chissà quanti pasticci.Grazie ancora e vi tengo aggiornati!
Un abbraccio.
-
13 Gennaio 2014 alle 13:47 #91295::
Buon pomeriggio a tutti.
Ovviamente non sono riuscito a ottenere un bel niente con il pacchetto xr.
Ho usato nel preambolo del file chiamato “volume-2” (ad esempio):
`
\externaldocument[A-]{appendice}
`
e quando dovevo richiamare il label di una tabella
`
\ref{A-tab:miatabella}
`Risultato? due bei puntoni interrogativi nel pdf finale…
Aiuto!
-
13 Gennaio 2014 alle 14:50 #91296::
Un esempio minimo compilabile sarebbe sempre gradito.
Te ne riporto uno (anzi, due) funzionante.
File Primo.tex:`\documentclass[a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[S-]{Secondo}[Secondo.pdf]
\begin{document}
\chapter{Uno}\label{chp:uno}
\chapter{Due}\label{chp:due}
Ho letto il capitolo~\ref{S-chp:uno} del secondo tomo.
\end{document}`File secondo.tex:`\documentclass[a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[P-]{Primo}[Primo.pdf]
\begin{document}
\chapter{Inizo}\label{chp:uno}
Ciao
\chapter{Proseguimento}
Ho letto il capitolo~\ref{P-chp:due} del primo tomo.\end{document}`Ti ho riportato già gli esempi in cui funzionano anche i collegamenti ipertestuali, supponendo possano tornarti utili. Se non ti servissero basta caricare xr anziché xr-hyper e togliere il terzo argomento di \externaldocument.
Fran
-
13 Gennaio 2014 alle 15:42 #91297
-
20 Gennaio 2014 alle 11:26 #91298::
Allora, sto cominciando a provarci ma con scarsi risultati….il documento “master” ha il seguente codice:
`
\documentclass[a4paper, twoside,10pt]{article}%
\usepackage{amsmath}%
\usepackage{amsfonts}%
\usepackage{amssymb}%
\usepackage{booktabs}%
\usepackage{graphicx}
\usepackage[italian]{babel}%
\usepackage{textcomp}%
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
\usepackage{float}%
\usepackage{multirow}%
\usepackage{lastpage}
\usepackage[font=small,format=hang]{caption}%labelfont={sf,bf}
\usepackage{helvet}
\usepackage{xcolor}
\renewcommand{\familydefault}{\sfdefault} %————- Font tutto arial
\graphicspath{img/} %—————————————-posizione grafici
%%——————————
\usepackage{geometry}
\geometry{hmargin={2.5cm,2.5cm},vmargin={2.2cm,2.2cm}}
\usepackage{fancyhdr}
\pagestyle{fancy}
%\topmargin=1pt
%\headsep = 40pt
\lhead{\footnotesize{\ditta}}
\chead{\footnotesize{Sistema Gestione Qualità}}
\rhead{\footnotesize{++parte del capitolo}}
\lfoot{}
\cfoot{\footnotesize{Pagina ~\thepage ~di \pageref{LastPage}}}
\rfoot{}
\renewcommand{\headrulewidth}{0.25pt}
\renewcommand{\footrulewidth}{0.25pt}%%—————————-
%——————————————-label esterne INIZIO \externaldocument[P-]{Primo}
\usepackage{xr}
\externaldocument[A-]{manuale1}
\externaldocument[B-]{manuale2}
\externaldocument[C-]{manuale3}%——————————————-label esterne FINE
\setlength{\parindent}{0pt} %—————————————–annulla indentazione in tutto il documento
\begin{document}
\thispagestyle{empty}
\tableofcontents
\newpage
\include{manuale-1}
\include{manuale-2}
\include{manuale-3}\end{document}
`Nel file manuale-1.tex ho messo le seguenti label e richiami:
`
\section{Introduzione}
\label{sez:introduzione}
\subsection{Scopo del documento}
BLA BLA BLA\subsection{Manuale}
\subsubsection{Generalità}BLA BLA BLA COME INDICATO NELLA SEZ.~\ref{B-sez:intro} nel corso del BLòA BLA
`
Ma il risultato quando faccio una prima compilazione sono due bei punti interrogativi…
Dove sbaglio?
Grazie.
Saluti.
-
20 Gennaio 2014 alle 13:03 #91299::
Per caso hai già compilato i file [tt]manuale1[/tt], [tt]manuale2[/tt] e [tt]manuale3[/tt]? Se provo a compilare il tuo file di esempio infatti mi avverte con dei warning che non trova i file [tt].aux[/tt] legati a questi tre file. Sono necessari perché in questi file pdfLaTeX memorizza le etichette che tu segni con l’apposito comando.
Infatti ogni volta che vuoi avere un riferimento incrociato sono necessarie due compilazioni:- con una crei il file ausiliario .aux con i riferimenti;
- con la seconda prendi il file .aux creato in precedenza e usi i riferimenti segnando le pagine.
-
20 Gennaio 2014 alle 13:25 #91300
-
20 Gennaio 2014 alle 13:29 #91301::
Secondo me sbagli in questo: tu stai cercado di usare riferimenti verso \label inserite in documento esterni, ma se i tuoi docmenti sono tre file inclusi da comandi ‘include nell’unico master file, questi tre manuale-1, manuale-2 e manuale-3 NON sono documenti esterni.Vale sempre il concetto che ti ha spiegato @skevin03; i riferimenti vengono letti dai file .aux, quidi questi devono già essere presenti sel disco in cartelle accessibili al sistema TeX.
Quindi se usi l’introduzione dei file mediante \include, devi avere già fatto una compilazione; ma c’è un problema: i tre file che includi NON sono esterni, ma interni all’unco documento, quindi i prefissi A-, B- C- sono irrilevanti, perché comunque i \label interni ad uno stesso documento devono essere assolutamante diversi, altiemneti ti esce un errore di Duplicate label.
Quindi se usi \include non usare il pacchetto xr e non usare i prefissi A-, B-, e C- che non servono a nulla.
Quando invece vorrai fare riferimento a label generati componendo documenti DIVERSI da quello che stai componendo, allora usa xr e usa i prefissi, perché non è detto che i label usati per comporre documenti DIVERSI, siano anch’essi diversi.
-
20 Gennaio 2014 alle 13:44 #91302
-
20 Gennaio 2014 alle 14:15 #91303::
Sì, ma l’esempio che ti ho scritto io è concettualmente diverso dal tuo lavoro:
io uso due file completamente indipendenti (così come si era capito dalla tua domanda), poi tu riporti un classico esempio di un unico file che richiama file di testo “esterni”.
ma dal momento che tu usi \include è come se il testo contenuto in manuale-1.tex e manuale-2.tex fosse nel file principale. Quindi non ha senso parlare di riferimenti a label esterne!
Da’ un nome univoco alle label, non caricare xr e tutto deve funzioanre (guarda il capitolo dell’arte relativo alla struttura di documenti di grosse dimensioni)Fran
-
20 Gennaio 2014 alle 14:50 #91304
-
20 Gennaio 2014 alle 14:54 #91305
-
20 Gennaio 2014 alle 17:38 #91306
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.