Risposte nei forum create
-
AutoreRisposte
-
::
Anche questo codice se provo a compilarlo stampa la “mi” correttamente.
…
Ho notato inoltre che se uso il mio comando \microc nella definizione del titolo del capiotlo o della sezione mi dà errore
`\chapter{… \protect\microc{} …}`
Due cose sul preambolo: caption2 è obsoleto, usa caption; il pacchetto newlfont è perfettamente inutile: esiste solo per retrocompatibilità.Ciao
Enrico
::La struttura della mia tesi è la seguente:`\documentclass[12pt,twoside,openright,a4paper]{book}
…
\end{document}`
Il problema è che dalla terza pagina in poi ho nelle pagine dispari più spazio a destra, mentre nelle pagine pari più spazio a sinistra.
Ma per fare una rilegatura fatta bene, dovrebbe essere proprio il contrario!
L’unica pagina che si salva è il frontespizio.Come posso fare per modificare questo comportamento?
È una FAQ. La classe book fa la scelta estetica (e non solo) di lasciare il margine esterno più largo. Se devi proprio aumentare il margine interno per la rilegatura, devi agire sui parametri \oddsidemargin e \evensidemargin
`\addtolength{\evensidemargin}{-5mm}
\addtolength{\oddsidemargin}{5mm}`
Così avrai un margine aggiuntivo di 5mm all’interno.Ciao
Enrico
::Ciò che mostri non è sufficiente: non ci interessa sapere quali file includi, ma un esempio (con preambolo minimale) di ciò che non funziona.
esattamente cosa ti interessa vedere?
Siccome a me il seguente documento
`\documentclass[a4paper]{book}
\usepackage[greek,italian]{babel}\newcommand{\microc}{\foreignlanguage{greek}{m}C/OS-II}
\begin{document}
\microc
\end{document}`
stampa la “mi” corretta e le altre lettere in caratteri latini, direi che qualche informazione da parte tua è necessaria. Le opzioni a \documentclass che ho tolto sono del tutto irrilevanti per il problema che hai.La costruzione \foreignlanguage{greek}{m} è equivalente a quella proposta da Lorenzo, ma un po’ meno pesante.
Un’altra cosa: non lasciare lo spazio finale nella definizione di \microc. Userai il comando con \microc{}, se vuoi uno spazio dopo: non sempre lo vuoi, no?
Ciao
Enrico
::ho provato la soluzione proposta ma continua a scrivere mC/OS-II
Non saprei perché. Ciò che mostri non è sufficiente: non ci interessa sapere quali file includi, ma un esempio (con preambolo minimale) di ciò che non funziona.
Di sicuro un errore c’è: chiamando \documentclass con l’opzione italian e babel con le opzioni greek e italian, mandi un po’ in confusione il sistema. Le lingue vanno entrambe in \documentclass o entrambe in \usepackage[…]{babel}.
Un’altra soluzione è
`\usepackage{textcomp}
\newcommand{\microc}{\textmu{}C/OS-II}`Sposto il topic nell’altro forum: questo non è un problema di tipografia, ma di LaTeX.
Ciao
Enrico
26 Febbraio 2007 alle 17:59 in risposta a: Testi con titoli che contengono citazioni in bibtex #13111::Salve a tutti.
Nella mia bibliorafia ci sono alcuni articoli con un titolo che contiene una citazione, tipo:
`TITLE =”'The most delicate and evanescent moments': frammento, spazio e tempo nelle epifanie di James Joyce”`
BIbLaTeX mette il titolo dell’articolo tra virgolette doppie e intepreta la prima virgoletta del titolo (quella prima di the) come una virgoletta chiusa, anzichè come una aperta.Usare la virgoletta aperta:
`TITLE =”`The most delicate and evanescent moments': frammento, spazio e tempo nelle epifanie di James Joyce”`
Ciao
Enrico
::[quote]Ragazzi,
Mi serve un piccolo favore. Io vorrei cambiare lo stile della caption. Vorrei mettere una linea sotto alla testa della caption.
Ad esempio invece di avere la normale caption vorrei
|1cm| Figura 3: dida
——————–cioè con un rule che oltre a stare sotto Figura 3, sfori di un centimetro nel margine di sinistra.
Purtroppo un mio prof. mi ha chiesto lo stesso layout del libro Microwave Engineering, che è chiaramente scritto in latex. Che ci posso fare.
Qualcosa come questo?
`\makeatletter
\def\line@under@label#1#2{%
\dimen@=#1 \advance\dimen@ 1cm
\vtop{\hbox{\strut#2}\nointerlineskip
\hbox to #1{\hss\vrule width \dimen@ height 0.4pt}\vss}}
\long\def\@makecaption#1#2{%\small
\vskip\abovecaptionskip
\sbox0{#1:\enspace}%
\hangindent\wd0 \hangafter1
\sbox2{#1:}%
\leavevmode\line@under@label{\wd2}{#1:}\enspace #2\par
\vskip\belowcaptionskip}
\makeatother`
Se vuoi un font più piccolo (cosa che ti consiglio), togli il % davanti a \small.Avanzo una birra. 😀
Ciao
Enrico[corr]Due spazi sono diventati \enspace, è meglio perché si evita che lo spazio dopo i due punti possa “ingrandirsi” durante l’impaginazione.[/corr]
Ma come cavolo fai!! 😀 😀 😀 [/quote]
Adesso vediamo di capire come funziona la faccenda. La prima cosa da sapere è che il comando \@makelabel è responsabile della composizione della didascalia. Prende due argomenti passati da \caption: il primo è “\figurename“, il secondo è il testo della didascalia. Chiamo il primo argomento “etichetta”. A questo punto decidiamo che il testo della didascalia sia un paragrafo che abbia il margine sinistro alla fine dell’etichetta seguita da due punti e uno spazio. Per fare questo misuro la lunghezza necessaria:
`\sbox0{#1:\enspace}`
cioè nel registro box 0 metto una scatola contenente l’etichetta, i due punti e uno spazio fisso di mezzo em. Posso accedere alla sua lunghezza con la dimensione \wd0. Perciò compongo il paragrafo (che è l’intera didascalia) con rientro di \wd0 dopo la prima riga:
`\hangindent\wd0 \hangafter 1`
Prima di comporre il paragrafo, misuro l’etichetta (si potrebbe fare meglio, forse, ma così funziona) con i due punti, con lo stesso sistema di prima. Mi serve per passare la lunghezza a un’altra macro, che compone l’etichetta con la linea sotto.La macro si chiama \line@under@label, che ha due argomenti: una dimensione e un testo. Compongo il tutto in una \vtop (che assomiglia a \parbox[t], cioè risulterà con il punto di riferimento alla stessa altezza della linea di base della prima riga). Questa \vtop contiene due scatole orizzontali: la prima è l’etichetta con i due punti. Segue il comando per non inserire interlinea (\nointerlineskip) e poi la seconda scatola orizzontale, che contiene la linea; ancora segue \vss, in modo che la seconda scatola non influisca sulla profondità della \vtop.
Come costruisco la linea? Con una \hbox di ampiezza uguale a quella del primo argomento (che poi è la lunghezza dell’etichetta con i due punti). Però voglio che la linea sia un centimetro più lunga. Quindi dico che il registro dimensionale \dimen@ sia quella lunghezza più un centimetro.
Il problema è di comporre la linea in modo che sbordi a sinistra, ma “invisibilmente”. Se x è l’ampiezza dell’etichetta e y quella della linea, ciò si ottiene dicendo
`\hbox to{\hss\vrule width height .4pt}`
La scatola sarà vista come di lunghezza x, ma contiene una linea di lunghezza y che sborda a sinistra (\hss dice: aggiungi tutto lo spazio, positivo o negativo, che serve).Ultima cosa: comporre la didascalia. Dico \leavevmode, per cominciare il paragrafo (\caption ha già detto che qui non c’è rientro \parindent), compongo l’etichetta con la linea sottostante, lascio mezzo em di spazio e scrivo il testo della didascalia:
`\leavevmode\line@under@label{\wd2}{#1:}\enspace #2\par`
In testa e in coda al tutto ho messo le spaziature verticali usuali (\abovecaptionskip e \belowcaptionskip).Unica limitazione: non puoi usare didascalie che siano più di un paragrafo. Se devi “andare a capo” nella didascalia, userai \\.
Ciao
Enrico
::Ragazzi,
Mi serve un piccolo favore. Io vorrei cambiare lo stile della caption. Vorrei mettere una linea sotto alla testa della caption.
Ad esempio invece di avere la normale caption vorrei
|1cm| Figura 3: dida
——————–cioè con un rule che oltre a stare sotto Figura 3, sfori di un centimetro nel margine di sinistra.
Purtroppo un mio prof. mi ha chiesto lo stesso layout del libro Microwave Engineering, che è chiaramente scritto in latex. Che ci posso fare.
Qualcosa come questo?
`\makeatletter
\def\line@under@label#1#2{%
\dimen@=#1 \advance\dimen@ 1cm
\vtop{\hbox{\strut#2}\nointerlineskip
\hbox to #1{\hss\vrule width \dimen@ height 0.4pt}\vss}}
\long\def\@makecaption#1#2{%\small
\vskip\abovecaptionskip
\sbox0{#1:\enspace}%
\hangindent\wd0 \hangafter1
\sbox2{#1:}%
\leavevmode\line@under@label{\wd2}{#1:}\enspace #2\par
\vskip\belowcaptionskip}
\makeatother`
Se vuoi un font più piccolo (cosa che ti consiglio), togli il % davanti a \small.Avanzo una birra. 😀
Ciao
Enrico[corr]Due spazi sono diventati \enspace, è meglio perché si evita che lo spazio dopo i due punti possa “ingrandirsi” durante l’impaginazione.[/corr]
::avete ragione. Non è una gran tabella.
Già. 🙂
Ma il problema che, comunque, si presenta è di carattere generale.
Mi spiego: quando scrivo una tabella, la lunghezza della riga non riesce ad adeguarsi
al testo. Che succede?ALTEZZA! L’altezza della riga!
che ho il testo (matematico, nella fattispecie) attaccato alle linee orizzontali che separano una riga dall’altra col comando \hline. Se forzo il testo con un \\, cosa succede?
che la linea verticale (begin{tabular}{|c|c|}) si interrompe per quel trattino in cui ho forzato con il comando \\.Evita le linee orizzontali. Oppure usa
`\dfrac{\mathstrut numeratore}{\mathstrut denominatore}`
Cancella la tua ridefinizione di \dfrac, mi raccomando. Puoi sostituirla con
`\newcommand{\tabdfrac}[2]{\dfrac{\mathstrut #1}{\mathstrut #2}}`
e usare \tabdfrac in tabular o array.Ciao
Enrico
::Io ho un’immagine abbastanza piccola, che volevo circondare di testo utilizzando il pacchetto floatflt.
In mezzo al testo ho allora utilizzato queste istruzioni:`\begin{floatingfigure}[p]{.50\textwidth}
\centering
\fbox{ \includegraphics{gerarchia}}
\caption{Una gerarchia di oggetti.
\label{fig:gerarchia}}
\end{floatingfigure}`
Apriti cielo: il testo viene tutto spostato a dx in una colonna larga metà pagina, viene perso il riferimento alla figura, la figura stessa non viene visualizzata e il listato di codice (fatto con listings) che ho subito sotto rimane immutato.Se invece utilizzo la classica`\begin{figure}[hb]
\centering
\fbox{ \includegraphics{gerarchia}}
\caption{Una gerarchia di oggetti.
\label{fig:gerarchia}}
\end{figure}`
ovviamente funziona tutto perfettamente.
Sbaglio qualcosa io?
Ho letto che il pacchetto floatflt può dare dei problemi…Sì, li può dare. Probabilmente è proprio il listato troppo vicino che li provoca: la documentazione di floatflt dice infatti che ci possono essere problemi se due oggetti galleggianti di tipo diverso sono troppo vicini. Sposta la figura più in su o lstlistings più giù.
Ciao
Enrico
::Salve, ho scritto questo codice per una tabella
`\begin{tabular}{|c|r|}
\hline
$\forall i\in\{1,\dots m\}\,\, x_{i}\in [-1,0]\cup[\epsilon,0]$
&
otherwise \\\begin{tabular}{|c|c|}
\hline
$y_{\bar{i}}$ & ${\bar{y}}_{i}$ \\
\hline
$\left[ -1,0 \right[$ & $\left.\right] y_{\bar{i}},0 \left[\right.$ \\
\hline
$\left.\right]0,1\left.\right]$ & $\left.\right]0,y_{\bar{i}}\left[\right.$\\
\hline
$0$ & $J\left(y_{\bar{i}},y_{\bar{\bar{i}}}\right)$ \\
\hline
\end{tabular}
&
\begin{tabular}{|c|c|}
\hline
$y_{\bar{i}}$ & ${\bar{y}}_{i}$ \\
\hline
$\left[ -1,0 \right[$ & $\left.\right]y_{\bar{i}},0\left[\right.$ \\
\hline
$0$ & $J\left(y_{\bar{i}},y_{\bar{\bar{i}}}\right)$ \\
\hline
$ \Big ] 0,\dfrac{9}{16}\epsilon^{2}\Big [ $ & $\Big ]y_{\bar{i}},\dfrac{9}{16}\epsilon^{2}\Big [$ \\
\hline
$\dfrac{9}{16}\epsilon^{2}$ & $\bar{y}_{1}=y_{\bar{1}} \,\,m=1$ \\
\hline
$\Big ]\dfrac{9}{16}\epsilon^{2}, -1 \Big ]$ & $\Big ]\dfrac{9}{16}\epsilon^{2},y_{\bar{i}}\Big [$\\
\hline
\end{tabular}\\
\hline
\end{tabular}`
Come vedete, si tratta di una tabella sulla cui seconda riga ci sono due tabelle.
il problema è che nelle tabelle alla seconda riga della tabella principale il testo non si adegua alla lunghezza delle celle dell’ambiente tabular. Non riesco a inserirlo per bene.
Lo stesso tipo di problema si nell’inserimento dell’oggetto tabella nell’ambiente tabella piu’ grande.Forzando questa cosa con \\, si ottiene una dicontinuità delle linee verticali in entrambi i casi di cui parlavo al paragrafo precedente.
Qualche indicazione mi sarebbe utile.
Sono sicuro di non avere scritto una grande tabella. Ho letto un po di cose sui manuali, sulla documentazione booktabs…ma non ne sono venuto a capo.Detto sinceramente, da una roba di quel genere dubito che si possa capire che cosa stai cercando di dire al lettore. Né si capisce veramente quale sia il tuo problema.
In una tabella non è il testo che si adegua alla lunghezza delle celle, ma viceversa. Forse ciò che vuoi dire è che le frazioni si appoggiano alle linee orizzontali?
Cerca di spiegarti meglio, ma prima di tutto pensa al fatto che una tabella del genere è orribile.
Nel frattempo, provo a darti qualche dritta sul preambolo.
(1) Se sei in Europa, aggiungi l’opzione a4paper a \documentclass
(2) Cancella la richiesta di epsfig (obsoleto) e di enumerate (visto che poi usi la sintassi di enumitem)
(3) Metti la definizione degli ambienti elenco e elencoi in un altro posto, insieme a tutte le altre definizioni
(4) Non chiedere due volte lo stesso pacchetto! Sprechi solo bit. 🙂
(5) Se devi modificare la gabbia (cioè l’area della pagina dove scrivi), usa il pacchetto geometry
(6) Se devi modificare l’interlinea usa il pacchetto setspace
(7) Il comando \dfrac fa già esattamente ciò che vorresti con la definizione
`\renewcommand{\dfrac}{\displaystyle\frac}`
L’unica differenza è che il tuo codice è sbagliato, perché forza il \displaystyle in tutta la formula in cui compare un \dfrac.Ultimo suggerimento: puoi evitare tutti quei $ usando l’ambiente array invece di tabular. Va in modo matematico, però. Devi solo scrivere \text{otherwise}.
Ciao
Enrico
::volevo chiedervi come si scrive il simbolo matematico di unicità in Latex.
Insomma, del tipo esiste ed è unico ossia \exists\,\mid.
Ma l’effetto non è il massimo a vedersi.Per quanto mi consta, non esiste un unico simbolo per l’unicità. 🙂
C’è chi usa un “esiste” seguito da un punto esclamativo: “\exists!”; se tu vuoi una barra diritta, usa la barra diritta: “\exists|” Ma siccome il simbolo ottenuto dovrebbe essere considerato come simbolo ordinario (quindi senza spaziature prima e dopo), il primo dovrebbe essere
`\exists{!}`
Sinceramente, a me non piace usare simboli di questo tipo nel testo o anche nelle formule, a meno che non stia scrivendo proprio di logica simbolica.Ciao
Enrico
::Ciao!
Non capisco perchè, ma con questa impostazione`\usepackage[font={small,sl}, labelfont=bf, justification= RaggedRight]{caption}[2004/07/16]`le mie didascalie non si allineano a sinistra della tal immagine o tabella.All’inizio pensavo che fosse il comando \centering che metto per ogni float, ma anche togliendolo il risultato è lo stesso: le didascalie sono allineate al centro!
Esempio:`\begin{figure}[!ht]
\centering
\includegraphics[scale=.70]{esempio_js}
\caption{Un semplice programma \js{}.}
\label{es_js}
\end{figure}`
Qualche suggerimento?L’opzione RaggedRight dice solo di comporre la didascalia sbandierata a destra; nulla nel nome e nella documentazione suggerisce un comportamento come quello che speravi.
LaTeX non ha alcuna nozione di quanto sia larga la tua figura; si può dirglielo, con un po’ di lavoro. Ma vorrei discutere sul tuo progetto grafico, sul quale non concordo.
Vediamo di vedere che cosa fa LaTeX normalmente: compone la didascalia con lo stesso corpo di base del documento su tutta la giustezza, tranne nel caso in cui la didascalia sia più corta. In questo caso la centra.
Con il pacchetto caption puoi agire su molti parametri, ma non hai la possibilità di comporre la didascalia con una giustezza pari alla larghezza della figura. Il motivo è semplice: due figure non saranno mai della stessa larghezza e ti troveresti ad avere didascalie di ampiezze diverse nel documento, magari sulla stessa pagina. Diverso è il caso di didascalie brevi, la centratura evita l’effetto di spaesamento dovuto a un testo che appare appeso al nulla.
Puoi dire a caption di non centrare le didascalie brevi con l’opzione “singlelinecheck=false”. Puoi ottenere l’effetto che speri provando il seguente codice:
`\newlength{\figwd}
\newcommand{\evalfigwd}[2][]{%
\settowidth{\figwd}{\includegraphics[#1]{#2}}}
\newenvironment{myfigure}[2][]
{\begin{figure}[htbp]%
\evalfigwd[#1]{#2}\centering
\begin{minipage}{\figwd}%
\includegraphics[#1]{#2}}
{\end{minipage}\end{figure}}`
Inserirai la figura in questo modo:
`\begin{myfigure}[scale=.70]{esempio_js}
\caption{Un semplice programma \js{}.}
\label{es_js}
\end{myfigure}`
So che la sintassi non è il massimo, ma per un esperimento può andare. Vedrai che le didascalie di dimensione variabile non sono molto gradevoli.Ciao
Enrico
::uhm, il package manager di MiKTeX non mi elenca varioref…
ma la differenza fra un ref normale e un l’uso di varioref quale sarebbe?Ci mancherebbe che lo elencasse! È uno dei pacchetti obbligatori che accompagna LaTeX, quindi ce l’hai già di sicuro. Va chiamato con “\usepackage[italian]{varioref}” (se scrivi in italiano).
In sintesi, varioref permette di riferirsi a un oggetto in modo preciso: per esempio, “si veda la figura~\vref{fig:pippo}” può risultare in qualcosa come
-
si veda la figura 2 nella pagina seguente
-
si veda la figura 2 a pagina 36
-
si veda la figura 2 nella pagina a fianco
Trovi una descrizione in italiano qui. È descritto anche come modificare i “testi variabili”: se non ti piace “nella pagina a fianco” puoi sostituire facilmente con un’altra locuzione.
Ciao
Enrico
::Enrico, cosa ne pensi della questione iniziale sull’uso o meno del corsivo in apici e pedici?
Non userei un pedice come in $L_\mathrm{eff}$ nemmeno sotto tortura, anche se so che in alcuni campi si usa.
Dipende dalle tradizioni, non c’è altro da fare che consultare i testi di buone case editrici per vedere come fanno.
Sulla questione delle “costanti” in tondo e delle “variabili” in corsivo sono del tutto contrario: per me la “i” unità immaginaria e il numero di Napier “e” vanno sempre e solo in corsivo. Mi viene abbastanza da ridere leggendo che la “c” che indica la velocità della luce va in corsivo perché il suo valore non è costante, dipendendo dalle misure.
Ciao
Enrico
-
-
AutoreRisposte