Risposte nei forum create
-
AutoreRisposte
-
::
E’ possibile passare da riga di comando delle opzioni ai pacchetti caricati ovvero far caricare dei pacchetti?
Esempio
latex ????? pippo.tex
dove al posto di ????? c’è qualcosa per far caricare, ad esempio, il pacchetto xcolor oppure per passare l’opzione dvips a xcolor?Grazie
Flavio`latex -jobname pippo '\RequirePackage[dvips]{xcolor}\input{pippo}'`
Oppure, se xcolor è già caricato dal tuo documento,
`latex '\PassOptionsToPackage{dvips}{xcolor}\input{pippo}'`
Ciao
Enrico
::La tesina è lunga una quarantina di pagine, per questo ho usato report; forse allora ho sbagliato a dividere in parti, meglio tenere i capitoli come primo genere di divisione, proverò così.
Per quanto riguarda la numerazione, invece, mi sarebbe molto utile e poi i capitoli (sezioni a questo punto, se decido di scalare il sezionamento) hanno un loro nome quindi sono ben distinguibili.Per una quarantina di pagine, una divisione in parti è fuori discussione. Già cinque capitoli, che fanno una media di otto pagine a capitolo, mi sembrerebbero di troppo.
La soluzione potrebbe essere quello di due capitoli (le tue parti) e la divisione in paragrafi (\section) di questi.
Ciao
Enrico
::
Aggiungere, prima di \makeatother, la seguente definizione:
`\makeatletter
\newcommand{\usebibdataurl}[2][|]{%
\toks@=\expandafter\expandafter\expandafter{\usebibdata{#2}{url}}%
\toks@=\expandafter\expandafter\expandafter{\the\toks@}%
\toks@=\expandafter\expandafter\expandafter{\the\toks@}%
\scantokens\expandafter{\expandafter\url\expandafter#1\the\toks@#1\endinput}}
\makeatother
`
Così \usebibdataurl{eco2005nome} stamperà l’URL in modo corretto (e non c’è bisogno di scrivere \_). Nel caso il carattere | sia usato nell’URL, si può scrivere
`\usebibdataurl[!]{eco2005nome}`
Il carattere dato come argomento opzionale è quello per delimitare l’URL come nella sintassi
`\url!!`
che assomiglia a quella di \verb.Ciao
Enrico
::Volevo dire che, a fronte di risposte di questo tipo, si può restare solo senza parole.
Non era poi così difficile. 🙂
Vediamo qual è l’idea. I file .bib sono strutturati secondo lo schema
`@entry{citekey,
field1={…},
field2={…},
…
}`
e questo ne fa un ottimo candidato per “keyval”. L’unico problema è estrarre la chiave di citazione. Vediamo con il tuo esempio del “Nome della rosa”.Definiamo \book in modo che raccolga tutta l’elemento della bibliografia come argomento e lo passiamo a \extractkey. Questo comando ha due argomenti delimitati, il primo termina alla prima virgola, il secondo è tutto il resto. Definiamo allora \currentry come il primo argomento, ci servirà in seguito, e passiamo il resto al comando \setkeys di keyval. Questo legge tutte le chiavi definite nello spazio “reuse” e che sono tutte dello stesso tipo: nel caso di “title=Il nome della rosa” il risultato è di eseguire
`\global\@namedef{\currentry @title}{Il nome della rosa}`
che equivale, nel nostro caso, a
`\global\def\eco2005nome@title{Il nome della rosa}`
Lo stesso viene eseguito su tutti i campi.Che ci resta da fare? Intanto la macro per usare questi dati; \usebibdata prende due argomenti: la chiave di citazione e il tipo di dato. A partire da questi costruisce il comando da eseguire; per esempio \usebibdata{eco2005nome}{title} esegue
`\eco2005nome@title`
che appunto stampa “Il nome della rosa”.Altra cosa da fare: nel file bib c’è scritto @book e non \book. Poco male: leggiamo il file in modo che \ sia un carattere normale e al suo posto si usi @:
`\newcommand\bibinput[1]{%
\begingroup\catcode`\@=0 \input{#1.bib}\endgroup}`
Quando si esegue \bibinput{xyz}, prima di leggere il file si dice a TeX che i comandi sono introdotti da @, quindi @book è come se fosse \book. Il tutto in un gruppo, quindi alla fine della lettura il carattere @ ritornerà al suo stato precedente. Per questo le definizioni dei vari comandi sono globali (\global\@namedef), altrimenti alla fine della lettura li perderemmo.Limitazioni. Non si può usare @ in uno dei campi o nella chiave di citazione. I campi vanno delimitati con le graffe (o con niente), non con le doppie virgolette come sarebbe possibile nella sintassi di BibTeX.
Ricordarsi di definire tutti i campi e i tipi di documento necessari. Per gli url c’è qualche problemino, ci penso.
Ciao
Enrico
::Ciao a tutti,
desideravo porre il seguente quesito:
Prendiamo una macro definita con \newcommand che riceve un parametro
Il parametro è la stessa chiave di ricerca che si passa al comando \cite per fare riferimento a un elemento di BIBTEX.
Supponiamo che io abbia il seguente elemento nel mio file .bib:
@book{eco2005nome,
title={Il nome della rosa},
author={Eco, U.},
isbn={9788845246340},
series={Grandi tascabili Bompiani},
url={http://books.google.com/books?id=OV\_yAAAAMAAJ},
year={2005},
publisher={Tascabili Bompiani}
}Nel mio file .tex scrivo:
qualche cosa \CLAFE{eco2005nome} ancora qualche cosa
Vorrei che la macro \CLAFE, che riceve il parametro “eco2005nome” legga il file CLAFE.BIB estragga in diverse variabili il valore del “title”, di “year”. In modo che poi possa utilizzare, all’interno della macro ovviamente, questa variabili per fare altre cose.
\newcommand{\CLAFE}[1]
{
Ricevo il parametro #1 che conterrà “eco2005nome”
Leggo il file .bib con questa chiave
Imposto in una variabile, per esempio, ANNO, il valore del campo Year del record .Bib
Scrivo il contenuto di ANNO in corsivo, o in grassetto o altro ….
}Chiedo troppo ?
🙂Ciao a tutti e un grazie comunque.
CLAFE
Interessante problema.
`\documentclass[a4paper]{article}\usepackage{keyval}
\makeatletter
\def\define@reuse@key#1{%
\define@key{reuse}{#1}{\global\@namedef{\currentry @#1}{##1}}}
\define@reuse@key{title}
\define@reuse@key{author}
\define@reuse@key{isbn}
\define@reuse@key{series}
\define@reuse@key{url}
\define@reuse@key{year}
\define@reuse@key{publisher}
\define@reuse@key{journal}
%%% inserire tutti gli altri tipi che servono
%\define@reuse@key{}\def\book#1{\extractkey#1\@nil}
\let\article\book
\let\incollection\book
%%% Inserire tutti gli altri tipi che servono\def\extractkey#1,#2\@nil{\def\currentry{#1}\setkeys{reuse}{#2}}
\def\usebibdata#1#2{\@nameuse{#1@#2}}
\makeatother\newcommand{\bibinput}[1]{%
\begingroup\catcode`\@=0 \input{#1.bib}\endgroup}\bibinput{xyz} % il nome del file .bib
\begin{document}
\usebibdata{eco2005nome}{title}\usebibdata{eco2005nome}{year}
\end{document}`
Dovrai completare le due liste di comandi secondo lo schema dato; la prima lista per i campi, la seconda per i tipi di documento.Ciao
Enrico
::Ciao a tutti.
Ho un raro problemaccio che non riesco a risolvere! In pratica, io ho inserito l’appendice nel testo come segue:
%%Appendice%%
\appendix
\renewcommand\appendixpagename{Appendix}
\renewcommand\appendixtocname{Appendix}
\appendixpage
\thispagestyle{empty}
\chapter{Chapter \ref{ch2}}
\label{a2}
\thispagestyle{empty}Il punto è che nonostante abbia messo \thispagestyle{empty} sotto \appendixpage il numero di pagina continua a comparire, dando un risultato pessimo!
Qualcuno può dirmi come ovviare? Grazie a tutti!
Che il risultato sia pessimo è una tua opinione. 🙂 Non serve a nulla dare \thispagestyle dopo \appendixpage perché quel comando emette un \newpage. Pensa intensamente al mago Merlino e scrivi, invece di \appendixpage, il codice seguente:
`\begingroup
\expandafter\let\csname ps@plain\expandafter\endcsname
\csname ps@empty\endcsname
\appendixpage
\endgroup`
Riguardo alla domanda del secondo messaggio, sinceramente non capisco che cosa tu intenda.Ciao
Enrico
::Dici egreg che è meglio metterli fuori dalla dimostrazione gli eventuali Lemmi??
Dentro o fuori non vedo la necessità di farli rientrare rispetto al margine. Lunghi tratti rientrati sono comunque da evitare. Si vedono spesso dimostrazioni di enunciati in più punti risolti con ambienti “enumerate”: brutto, se occupa più di mezza pagina, e nemmeno necessario, perché basta il numero all’inizio del capoverso.
Ciao
Enrico
::Ciao a tutti! Sto’ scrivendo la tesi di laurea e mi sono imbattuto in un problema. All’interno della dimostrazione di un teorema devo inserire 2 lemmi conseguenti e per questo volevo farli rientrare verso il centro in modo da fare capire che sono inseriti all’interno della dimostrazione… Come faccio?? 🙂
Non farlo.
Ciao
Enrico
::Buongiorno,
ringrazio OldClaudio per avermi indicato la documentazione dove andare a guardare. Andando a leggere cosa fa \pdfelapsedtime, infatti, mi è sorto un dubbio sul codice scritto da Enrico. Se questa macro contiene il numero di “secondi scalati”, cioè secondi divisi per 65536, per avere il risultato in millisecondi non bisognerebbe dividere per 1000 e moltiplicare per 65536 che è esattamente il contrario di ciò che fa il codice?Grazie mille per la pazienza
FraEdit: il tutto mi è più oscuro in quanto provando il codice effettivamente da risultati giusti (il che, in realtà, non mi stupisce affatto!)
Quel “seconds divided by 65536” contraddice in modo evidente il numero indicato subito dopo: 323115 moltiplicato per 65536 darebbe un tempo piuttosto lungo. È chiaro che l’autore intende “il numero di (secondi/65536)”.
Confermo che si tratta di una primitiva specifica di pdfTeX; non c’è in XeTeX né in LuaTeX.
Ciao
Enrico
::Buonasera a tutti,
qualcuno sa se e come è possibile risalire alla durata della compilazione di un documento con LaTeX (non mi sembra ci sia scritto nel file .log)?`\usepackage{atveryend}
\AtVeryEndDocument{\message{%
*********************************^^J%
* Elapsed time
\number\numexpr1000*\pdfelapsedtime/65536\relax\space
milliseconds^^J%
*********************************^^J%
}}`
Non è una misura accuratissima, ma non credo che ti serva tanto di più.Se hai un sistema Unix puoi usare time (compilando dalla shell):
`time pdflatex file`
Ciao
Enrico
::Scusa ma non la trovo! Andando in http://tug.org/texlive/pretest c’è un link cliccabile a MacTeX ma manda alla pagina di MacTeX 2010 e non mi sembra ci sia la versione pretest.
Bene allora per Lion resto fiducioso! 🙂Devi seguire il percorso per trovare il deposito per la versione pretest e poi sceglierne uno; eccolo qui: http://ftp.cstug.cz/pub/tex/local/tlpretest/
Ciao
Enrico
::Cercando su internet non sono riuscito a trovare la versione pretest di MacTeX 2011. Esiste o bisogna attendere la versione ufficiale di TeXLive 2011?
Ciao
FraAggiungo: c’è modo di sapere se funzionerà con MacOS X Lion, in uscita a luglio?
Non ho provato, ma nei depositi del pretest c’è un MacTeX. Posso supporre che sia la versione pretest, da aggiornare poi con TeX Live Utility. Non c’è che da provare.
Hai dubbi che possa non funzionare con 10.7? Io no. 🙂
Ciao
Enrico
::Ciao Enrico.
Sì, conoscevo pagecommand ma tra le due soluzioni quella con il
\clearpage mi sembrava meno contorta . Certo è un peccato che
non ci sia un’opzione apposita in pdfpages. Ora scrivo all’autore 😀Magari gli suggerisco un’opzione solo per la prima pagina, tipo label=pippo,
e una in cui viene aggiunto un numero all’etichetta di base: per esempio
mlabel=pippo genererà pippo.1 per la pagina 1, pippo.2 per
la seconda e così via.Ciao ciao.
FraIntanto puoi fare così. Sarebbe interessante potersi riferire alla pagina inclusa invece che a un contatore ad hoc, visto che di sicuro \includepdf ne conosce il numero.
`\documentclass[a4paper]{article}
\usepackage{pdfpages,etoolbox}
\newcounter{labels}
\newcommand\mlabel[1]{\stepcounter{labels}\label{#1.\thelabels}}
\makeatletter
\newcommand\xolabel[1]{\label{#1}\global\let\olabel\@gobble}
\makeatother%%% infame trucco
\expandafter\pretocmd\csname\string\includepdf\endcsname
{\setcounter{labels}{0}\global\let\olabel\xolabel}{}{}
%%% fine dell'infame trucco\begin{document}
\includepdf[pages=1-3,pagecommand=\mlabel{pippo}]{dilip}\includepdf[pages=4-6,pagecommand=\olabel{pluto}]{dilip}
\pageref{pippo.1} \pageref{pippo.2} \pageref{pippo.3}
\pageref{pluto}
\end{document}`
Aggiungiamo a \includepdf il codice per inizializzare il contatore delle etichette e il comando \olabel. Quest’ultimo viene reso innocuo dopo il primo uso in un \includepdf.Come e perché funzioni quel misterioso \pretocmd è lasciato per esercizio al lettore. 🙂
Ciao
Enrico
::beh, eleganza o meno il problema è risolto, quindi grazie infinite 😉
Esiste la chiave “pagecommand” che però esegue il codice dato su ogni pagina inclusa, quindi occorre spezzare l’inclusione:
`\includepdf[pages=3,pagecommand=\label{pippo}]{pippo}
\includepdf[pages=4]{pippo}
\includepdf[pages=5,pagecommand=\label{pluto}]{pippo}
\includepdf[pages=6-8]{pippo}`
Ciao
Enrico
-
AutoreRisposte