Risposte nei forum create
-
AutoreRisposte
-
::
Farò una prova su una Ubuntu “vergine”. Può darsi che tlmgr abbia imparato a impostare il PATH da sé. Del resto è facile: tlmgr può certamente conoscere la directory in cui risiede interrogando il sistema operativo.
Se è così (ma non era con la prima versione “testing”), le cose si semplificano. Sto scrivendo una noticina sulla procedura di installazione su Ubuntu.
Sembra che Norbert abbia proprio pensato a questa faccenda: le righe 27–71 di tlmgr.pl, in particolare la 58 dovrebbero essere risolutive.
Più tardi faccio la promessa prova, ma pare proprio che andrà. E poi metto in linea la bozza della guida, che ho pensato dedicata al quasi niubbo.
La prova è andata a buon fine! Basta un semplice alias. Hurrah!
Una bozza della guida è qui (scegliere latin-1 come codifica per vedere correttamente le lettere accentate). Qualcuno sa come chiamare correttamente “htlatex” per avere utf-8?
Ciao
Enrico
::Farò una prova su una Ubuntu “vergine”. Può darsi che tlmgr abbia imparato a impostare il PATH da sé. Del resto è facile: tlmgr può certamente conoscere la directory in cui risiede interrogando il sistema operativo.
Se è così (ma non era con la prima versione “testing”), le cose si semplificano. Sto scrivendo una noticina sulla procedura di installazione su Ubuntu.
Sembra che Norbert abbia proprio pensato a questa faccenda: le righe 27–71 di tlmgr.pl, in particolare la 58 dovrebbero essere risolutive.
Più tardi faccio la promessa prova, ma pare proprio che andrà. E poi metto in linea la bozza della guida, che ho pensato dedicata al quasi niubbo.
Ciao
Enrico
16 Settembre 2010 alle 8:58 in risposta a: Sezione con etichetta fuori gabbia (come in doc. pdfTeX) #50070::\titlespacing non c’entra nulla.
`\titleformat{\section}{\normalfont\large\bfseries}{\llap{\thesection\quad}}{0pt}{}`
Ciao
EnricoInteressante, avevo bisogno anch’io di creare un layout del genere, ma nell’indice. L’avevo fatto con titletoc utilizzando \makebox, ma ora ho provato anche questa soluzione (\llap) e funziona benissimo.
Enrico, potresti spiegarmi, per favore, che differenza c’è tra i due metodi? Perché l’uno è da preferire all’altro?Questi due metodi sono quasi equivalenti:
`\makebox[0pt][r]{testo}
\llap{testo}`
Il primo è in stile LaTeX, il secondo è più veloce, ma ha un piccolo inghippo: se TeX lo incontra quando è in modo verticale, non passa al modo orizzontale. Nel caso specifico non c’è problema; se ci fosse, basta aggiungere \leavevmode prima di \llap.Ovviamente \llap è molto più efficiente, perché la sua espansione è, a parte alcuni irrilevanti dettagli (La)TeXnici
`\hbox to 0pt{\hss #1}`
mentre quella di \makebox… richiede un centinaio (o giù di lì) di espansioni.Ciao
Enrico
16 Settembre 2010 alle 6:58 in risposta a: Sezione con etichetta fuori gabbia (come in doc. pdfTeX) #50068::Ciao a tutti,
leggendo la documentazione di pdfTeX ho notato che l’autore ha modificato le impostazioni relative ai titoli delle sezioni in modo tale che i relativi numeri nonché gli spazi orizzontali che li separano dai titoli veri e propri vengano spostati verso sinistra e quindi estromessi dalla gabbia del testo. In pratica, è la prima lettera dell’espressione testuale contenuta in ciascun comando \section{…} ad essere allineata orizzontalmente con il margine sinistro della \textwidth.Mi interesserebbe capire come realizzare la cosa, per pura curiosità. Per ridurre al minimo le costruzioni poco ortodosse, ho deciso di usare titlesec.
Non sono purtroppo riuscito a risolvere il problema, ma riporto comunque alcune delle mie riflessioni. Il codice seguente è relativo alla spaziatura predefinita in riferimento al comando \section:
`\titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
`
Secondo me è sufficiente agire esclusivamente sul secondo parametro della macro. Sia x la lunghezza che tiene traccia sia della dimensione dell’etichetta (il numero della sezione), sia dello spazio orizzontale che la separa dal titolo (la figura sottostante riporta un esempio, nel caso in cui la sezione sia la 10.2):
`
10.2 Titolo della sezione
<----- x ` In questo caso, si potrebbe scrivere: `\titlespacing*{\section}{-x}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex} ` Problema: quanto vale x? Dalla documentazione di titlesec si scopre che \titlelabel è definito come`\titlelabel{\thetitle\quad}
`
quindi verrebbe da pensare di calcolare la dimensione di \thetitle\quad, ma probabilmente non funzionerebbe, perché il primo dei due valori verrebbe fornito a corpo normale, non in neretto, ecc.Il secondo problema è che la larghezza delle etichette è variabile, non fissa (“1.1” occupa meno spazio di “19.8”). Il manuale di titlesec illustra come superare anche questo problema, introducendo una scatola dai limiti invalicabili: al posto di
`\titleformat{\section}{…}{\thesection}{1em}{}
`
si può scrivere`\titleformat{\section}{…}{\makebox[2em][r]{\thesection}}{1em}{}
`
così la dimensione dell’etichetta viene fissata. Sinceramente questa soluzione non mi piace granché, in quanto presuppone di conoscere a priori il valore “giusto” da assegnare a \makebox (e quindi di sapere quante sezioni ci saranno). Non solo, ma se poi decidessi di riformattare il corpo delle sezioni passando, poniamo il caso, da \Large a \large, le cose cambierebbero nuovamente. Ma per ora sorvoliamo e adottiamo questo sistema. x potrebbe valere 2em + 1em = 3em, ma quando scrivo`\titlespacing*{\section}{-3em}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
`
mi accorgo visivamente che il valore non è esatto e pertanto devo intervenire a mano, inserendo un valore empirico.La domanda, a questo punto, diventa: qual è il corretto valore da assegnare al campo “left” di \titlespacing? La risposta che mi aspetto è una qualche macro TeXnica, eventualmente derivata da calcoli ulteriori, e non un valore esplicito del tipo “-12.6pt”. Meglio sarebbe (ma non è indispensabile) rimuovere quel \makebox[2em] che racchiude l’etichetta numerica.
Riporto, giusto per completezza, un riassunto sulla vicenda:
`\documentclass{book}
\usepackage{titlesec}
\titleformat{\section}{\normalfont\Large\bfseries}{\makebox[2.2em][r]{\thesection}}{1em}{}
%\titlespacing*{\section}{-3.2em}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex} % intuitivamente sembra giusto così…
\titlespacing*{\section}{-1.8cm}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex} % … invece sembra essere questo il valore corretto, calcolato empiricamente.
\usepackage{lipsum}\begin{document}
\setcounter{chapter}{9} % solo per prova
\chapter{Capitolo}
\setcounter{section}{8} % solo per prova
\section{Oh, all'inizio}
\lipsum[1]
\section{Tabula rasa}
\lipsum[1]
\section{Infine}
\lipsum[1]
\end{document}
`
Molte grazie e a presto.\titlespacing non c’entra nulla.
`\titleformat{\section}{\normalfont\large\bfseries}{\llap{\thesection\quad}}{0pt}{}`
Ciao
Enrico
::Se è così (ma non era con la prima versione “testing”), le cose si semplificano. Sto scrivendo una noticina sulla procedura di installazione su Ubuntu.
Ciao
EnricoGuarda questo mio articoletto appena sfornato se ti è utile:
Inoltre sarebbe interessante scrivere una guida anche per l’installazione da torrent sicuramente molto più veloce della procedura classica (ho appena installato una seconda TeX Live 2010 proprio in questo modo).
@Elrond: Grazie per la drittaCiao
Non è tanto diversa da come l’ho impostata; io però ho aggiunto un paio di cose che consiglio caldamente: una è dare
`sudo ln -s /usr/local/texlive/2010/bin/i386-lnux /opt/texbin`
l’altra è il modo di rendere “globale” l’impostazione del PATH (cioè per tutti gli utenti). Ho anche sottolineato come “i386-linux” non sia necessariamente la directory giusta: può essere “x86_64-linux” o “powerpc-linux”.Perché quel link simbolico? Ci sono vari motivi. Primo: così si deve usare una sola volta quel lungo percorso e in tutti gli altri casi ci si riferisce a /opt/texbin. Secondo: quando ci sarà la 2011, basterà un comando “ln -s” simile e non cambiare nient’altro. Nemmeno occorre un “logout-login” per far capire al sistema la nuova posizione.
Non consiglierei come primo passo la rimozione della 2009. Anzi, con il metodo del link simbolico, puoi andare dall’una all’altra con una procedura semplicissima, cioè cambiando l’indirizzamento del link. Se qualcuno ha un progetto che con la 2009 si compila perfettamente, potrebbe avere problemini con la 2010 per via di nuove versioni di pacchetti: succede nelle migliori famiglie. 🙂 Cambiando il link torna alla 2009, fa quello che deve fare e, con tranquillità, dopo aver consegnato il lavoro, studia come risolvere i problemini sulla 2010. Certo, se si hanno problemi di spazio, tutte e due non ci stanno. Ma è davvero un problema al giorno d’oggi? Sulla macchina “grossa” ho 2007, 2008, 2009, 2010 (doppia architettura, 32 e 64 bit) per Mac OS X, più la 2009/Debian, la 2009 e la 2010 su una macchina virtuale Ubuntu e qualche altra macchina virtuale per fare prove. Di spazio ne avanza parecchio. 🙂
Ciao
Enrico
::Elliminato Texlive 2009 di Debian e installato Texlive 2010 “vanilla”,
dovrei reinstallare un Garamond di Adobe. Per automatizzare
il processo e non dover fare tutto a mano ho innazitutto creato
(copiando in parte, e qui forse sta il guaio) un fle .map
e creato uno script di installazione. Il file garamond.sty è il seguente:
`\ProvidesPackage{garamond}
\RequirePackage{keyval}
\newif\ifpad@osf
\define@key{Pad}{scaled}[1.05]{%
\def\pad@Scale{#1}}
\define@key{Pad}{osf}[true]{%
\csname pad@osf#1\endcsname}
\def\ProcessOptionsWithKV#1{%
\let\@tempc\relax
\let\Pad@tempa\@empty
\@for\CurrentOption:=\@classoptionslist\do{%
\@ifundefined{KV@#1@\CurrentOption}%
{}%
{%
\edef\Pad@tempa{\Pad@tempa,\CurrentOption,}%
\@expandtwoargs\@removeelement\CurrentOption
\@unusedoptionlist\@unusedoptionlist
}%
}%
\edef\Pad@tempa{%
\noexpand\setkeys{#1}{%
\Pad@tempa\@ptionlist{\@currname.\@currext}%
}%
}%
\Pad@tempa
\let\CurrentOption\@empty
}
\ProcessOptionsWithKV{Pad}
\AtEndOfPackage{%
\let\@unprocessedoptions\relax
}
\ifpad@osf
\renewcommand{\rmdefault}{padj}
\else
\renewcommand{\rmdefault}{padx}
\fi
\normalfont
\endinput
\renewcommand{\sfdefault}{phv} % helvetica
%\renewcommand{\rmdefault}{pad} % garamond
\renewcommand{\ttdefault}{pcr} % courier
\endinput`
Lo script install.sh è invece il seguente:
`#!/bin/bash
FONT=garamond
FOUNDRY=adobeBASEDIR=/usr/local/texlive/2010/texmf-dist
AFM=/fonts/afm/$FOUNDRY/
TFM=/fonts/tfm/$FOUNDRY/
VF=/fonts/vf/$FOUNDRY/
FD=/fonts/fd/$FOUNDRY/
TYPE1=/fonts/type1/$FOUNDRY/
FD=/tex/latex/psfonts/mkdir -p $BASEDIR$AFM$FONT
rm -f $BASEDIR$AFM$FONT/*
cp *.afm $BASEDIR$AFM$FONT
chmod 644 $BASEDIR$AFM$FONT/*mkdir -p $BASEDIR$TFM$FONT
rm -f $BASEDIR$TFM$FONT/*
cp *.tfm $BASEDIR$TFM$FONT
chmod 644 $BASEDIR$TFM$FONT/*#mkdir -p $BASEDIR$TYPE1$FONT
#rm -f $BASEDIR$TYPE1$FONT/*
#cp *.pfa $BASEDIR$TYPE1$FONT
#chmod 644 $BASEDIR$TYPE1$FONT/*mkdir -p $BASEDIR$VF$FONT
rm -f $BASEDIR$VF$FONT/*
cp *.vf $BASEDIR$VF$FONT
chmod 644 $BASEDIR$VF$FONT/*mkdir -p $BASEDIR$FD$FONT
rm -f $BASEDIR$FD$FONT/*
cp *.fd $BASEDIR$FD$FONT
chmod 644 $BASEDIR$FD$FONT/*mkdir -p $BASEDIR/fonts/map/dvips/$FONT
cp ./garamond.map $BASEDIR/fonts/map/dvips/$FONTmkdir -p $BASEDIR/tex/latex/psnfss
cp ./garamond.sty $BASEDIR/tex/latex/psnfsstexhash
updmap-sys –enable Map garamond.map
update-updmap`
Lanciando il script ricevo tuttavia questo output:
`
!!! ERROR! The map file `pad.map' has not been found at all.Either put this file into the right place or remove the
reference from the configuration file. An automatic way
to disable unavailable map files is to call
updmap –syncwithtreesFor manual editing, call
updmap –editinstall.sh: 48: update-updmap: not found`
Ma dove sta la chiamata a pad.sty?? Non riesco a trovarla….
Inoltre non so se sia necessario installare anche i .pfa
E il comando update-updmap: non esiste più?Grazie
M.Non mettere mai nulla di tuo in /usr/local/texlive/2010/texmf-dist. Mai. Il posto giusto è
/usr/local/texlive/texmf-local
Se cerchi l’ultimo filone su MinionPro, trovi anche spiegato come inserire il tuo .map fra quelli letti da updmap-sys
Ciao
Enrico
::Il fatto che dica “done running mktexlsr” non è significativo. Da’ un’occhiata alla data di modifica del file
`/usr/local/texlive/2010/texmf-dist/ls-R`
Il fatto è che l’ho provato tempo fa e mi sono accorto che non venivano aggiornate le mappe dei font (updmap-sys). L’inghippo è proprio che su Ubuntu, per precisa scelta, sudo non eredita il PATH dell’utente che lo lancia. Maggiori particolari con “man sudo”.Ora non ho tempo per fare prove, ma se qualcuno può confermare che un semplice sudo di quel tipo è sufficiente, meglio.
Ciao
EnricoLa data di modifica del file ls-R è 😯 quella giusta, quella corrispondente al momento in cui ho lanciato il comando di update del pacchetto.
La soluzione del comando alias è praticamente uguale a quella dello script indicato da capitalaslash. Ovvero far eseguire premettendo sudo l’utility tlmgr con il percorso completo.
La cosa strana è che sembra funzionare quando non dovrebbe, perché appunto, il PATH di root (con l’opzione secure_path di Ubuntu) non dovrebbe sapere della directory di TeX Live.
SalutiFarò una prova su una Ubuntu “vergine”. Può darsi che tlmgr abbia imparato a impostare il PATH da sé. Del resto è facile: tlmgr può certamente conoscere la directory in cui risiede interrogando il sistema operativo.
Se è così (ma non era con la prima versione “testing”), le cose si semplificano. Sto scrivendo una noticina sulla procedura di installazione su Ubuntu.
Ciao
Enrico
::Eccomi qua. Ho potuto constatare che l’alias semplice, senza impostazioni di path funziona, come testimonia la sessione che vi riporto qui sotto, in cui mktexlsr è stato correttamente eseguito durante un aggiornamento di un pacchetto:
`roberto@roberto-desktop:~$ sutlmgr update csvsimple
tlmgr: package repository ftp://ftp.snt.utwente.nl/pub/software/tex/systems/texlive/tlnet
tlmgr: saving backups to /usr/local/texlive/2010/tlpkg/backups
[1/1, ??:??/??:??] auto-install: csvsimple [527k]
tlmgr: package log updated at /usr/local/texlive/2010/texmf-var/web2c/tlmgr.log
running mktexlsr …
done running mktexlsr.
roberto@roberto-desktop:~$`
Sul mio sistema (Lucid 10.04) sembra che il comando sudo importi i path dell’utente di default, forse.L’alias era il seguente:
`alias sutlmgr=”sudo /usr/local/texlive/2010/bin/i386-linux/tlmgr”`La cosa è un po’ noiosa da investigare.
Ci aggiorniamo presto, bye.Il fatto che dica “done running mktexlsr” non è significativo. Da’ un’occhiata alla data di modifica del file
`/usr/local/texlive/2010/texmf-dist/ls-R`
Il fatto è che l’ho provato tempo fa e mi sono accorto che non venivano aggiornate le mappe dei font (updmap-sys). L’inghippo è proprio che su Ubuntu, per precisa scelta, sudo non eredita il PATH dell’utente che lo lancia. Maggiori particolari con “man sudo”.Ora non ho tempo per fare prove, ma se qualcuno può confermare che un semplice sudo di quel tipo è sufficiente, meglio.
Ciao
Enrico
::Non ho provato (perché ho ancora TeX Live installato dai repository di Ubuntu, ma fra qualche giorno vi raggiungo), ma immagino che
`alias sutlmgr='sudo bash -c “export PATH=/usr/local/texlive/2010/bin/i386-linux:${PATH} && tlmgr -gui”'`
debba funzionare (ho altri alias che contengono sudo al loro interno e funzionano correttamente).Funziona, ma sarebbe meglio se venisse richiamato solo tlmgr e l’opzione -gui fosse passata da linea di comando. Suppongo che occorra definire una funzione di bash.
Ciao
Enrico
::Salve, non so se la mia soluzione, che fa uso dell’interfaccia grafica perl-tk, può interessare a qualcuno.
Io ho creato un’icona d’avvio sul mio desktop, che usa il seguente comando:
`gksu -d -S -D “TeXLive Manager” 'env PATH=/usr/local/texlive/2010/bin/x86_64-linux:/usr/bin:/bin tlmgr -gui'`
Il mio sistema è un Ubuntu 10.4 a 64bit
L’opzione -d serve per avere informazioni di debug nel caso qualcosa dovesse andare storto, -S fa sì che ‘gksu’ (frontend grafico di ‘su’) usi ‘sudo’, -D “…” è una semplice descrizione del comando che compare anche nella finestra di dialogo.
Funziona perfettamente
EDIT:
ovviamente mi sono dimenticato di dire che ho disinstallato tutti i pacchetti tex della Ubuntu.Funziona anche questo.
Ciao
Enrico
::[quote]Non direi. Quando tlmgr chiamerà processi come mktexlsr o updmap-sys, troverà quelli in /usr/bin. Ci sono già cascato: con “sudo” su Ubuntu si attiva il PATH di root e non si eredita quello dell’utente che lancia “sudo”.
Ciao
EnricoQualcosa del tipo
`sudo bash -c “export PATH=/usr/local/texlive/2010/bin/i386-linux:${PATH} && tlmgr”`
potrebbe funzionare? In questo modo si esporta il valore modificato del PATH per tutti i comandi eseguiti da bashCi provo domani.[/quote]
Funziona; sostituirei “tlmgr” con “tlmgr -gui” (occorre perl-tk). Come si può definire un alias che esegua questa funzione?Ciao
Enrico
::Mi rifiuto di pensare che qualcuno voglia etichettare come figure le equazioni da numerare: vorrebbe dire che non ha mai visto un libro di matematica in vita sua.
Ciao
EnricoIo faccio ciò che mi è stato chiesto, non invento le richieste. e poi si trattava di posizionare l’immagine al centro e allineare il numero (fig. x.xx), tutto qui, a prescindere dal contenuto dell’immagine …
Un’equazione non è una figura. Etichettarla (Fig. 3.20) non ha alcun senso.
Potrei anche capire di voler usare una numerazione unica per tutto, ma ovviamente distinguendo i vari oggetti tra loro: un teorema è un teorema, un’equazione (più in generale una formula) è un’equazione, un’illustrazione è un’illustrazione. Lo ripeto: se qualcuno considera l’equazione della trasformata di Fourier una figura non ha idee molto chiare su come si espone la matematica.
Hai mai visto un articolo o un libro nel quale si faccia così?
Ciao
Enrico
::Non direi. Quando tlmgr chiamerà processi come mktexlsr o updmap-sys, troverà quelli in /usr/bin. Ci sono già cascato: con “sudo” su Ubuntu si attiva il PATH di root e non si eredita quello dell’utente che lancia “sudo”.
Ciao
EnricoQualcosa del tipo
`sudo bash -c “export PATH=/usr/local/texlive/2010/bin/i386-linux:${PATH} && tlmgr”`
potrebbe funzionare? In questo modo si esporta il valore modificato del PATH per tutti i comandi eseguiti da bashCi provo domani.
Ciao
Enrico
-
AutoreRisposte