Risposte nei forum create
-
AutoreRisposte
-
::
Scusate, ho un “piccolo” problema…ho modificato la tabella sottostante da “tabular” a “tabulary”:
`\begin{table}[H]
…
\item y
\end{tabenum}
\midrule
…
\bottomrule
\end{tabulary}
\caption{Caso d'uso 1\label{casouso1}}
\end{table}`ma ricevo il seguente errore: ./cap2.tex:137:Something’s wrong–perhaps a missing \item. \end{tabulary}
Di certo, se ti dimentichi di finire una riga con il \\, avrai difficoltà. Inoltre tabularx e tabulary hanno a volte problemi. Una tabella deve essere valutata per ciò che è in relazione a come deve apparire nel testo; i sistemi automatici non sempre danno una risposta adeguata.
In più, scomodare tabulary per una tabella a una colonna mi sembra esagerato:
`\begin{tabular}{@{}p{.9\columnwidth}@{}}`
è più che sufficiente.Ciao
Enrico
::Ciao a tutti. Ho definito un comando \bibtex che stampa il logo BibTeX. Già che ci sono, vorrei che venisse creata una voce nell’indice analitico. Non capisco perché il seguente:
`\documentclass{article}
\usepackage{makeidx}
\makeindex\newcommand{\bibtex}{\textsc{Bib}\TeX%
\index{bibtex@\textsc{Bib}\TeX}%
\index{Programma!bibtex@\textsc{Bib}\TeX}}\begin{document}
Il programma \bibtex{} serve per…
\printindex
\end{document}
`
non funziona: nell’indice analitico non viene generata alcuna voce (nessun errore né warning da parte del compilatore).Sembra che LaTeX non accetti il comando \TeX in quel modo. Infatti, se scrivo semplicemente:
`\newcommand{\bibtex}{\textsc{Bib}\TeX%
\index{bibtex@\textsc{Bib}TeX}%
\index{Programma!bibtex@\textsc{Bib}TeX}}
`
le voci vengono generate (anche se “TeX” nell’indice analitico è naturalmente scritto così com’è, e non come quando si usa l’apposito comando “\TeX”).`\index{bibtex@\protect\bibtex}`
Ciao
Enrico
::
Ho scritto io un “bug report” a Brooks Moses.Un modo migliore per risolvere il problema potrebbe essere scrivere questo nel preambolo, dopo aver caricato listings:
`\makeatletter
\let\@@@lstlisting\lstlisting
\def\lstlisting{\@nobreakfalse\@@@lstlisting}
\makeatother`
Naturalmente, se cominci un listing subito dopo un titolo, è bene dare l’opzione aboveskip=0pt:
`\begin{lstlisting}[aboveskip=0pt]`
in modo da eliminare lo spazio in più.Non uso molto listings (anzi per niente), quindi sarebbe bene che qualcuno provasse a vedere se ci sono effetti indesiderati.
Ciao
Enrico
::Ho sottomano due sorgenti che presentano differenze solo nel contenuto; pertanto condividono perfettamente preambolo, definizioni di comandi e tutta la parte TeX-nica…
Vorrei evidenziare nel pdf della versione più aggiornata le modifiche effettuate, per agevolare l’autore nel riconoscere e valutare le correzioni apportate.Da shell con il comando diff posso agevolmente ottenere il dettaglio di quali siano queste differenze, in vari formati.
Il mio problema consiste nel trovare un modo (da shell) per editare in modo automatico il sorgente corretto includendo dei comandi che evidenzino la modifica fatta nel pdf risultante.Cerco di spiegarmi meglio con un esempio.
Sorgente originale:
`bla bla bla perchè bla bla bla`
Sorgente corretto:
`bla bla bla perché bla bla bla`
Sorgente che evidenzia la correzione:
`bla bla bla \textcolor{red}{perché} bla bla bla`Immagino che non sia molto difficile ottenere questa sostituzione con un semplice scriptino in bash, ma le mie conoscenze di sed, awk e/o patch sono ancora troppo limitate per creare qualcosa del genere…
Riconosco inoltre che qualsiasi soluzione di questo genere non può portare ad un risultato molto solido, ma poiché sono sicuro che le modifiche non coinvolgono alcun elemento sensibile (niente matematica, titoli, tabelle ecc…) penso potrebbe funzionare…Prevedendo qualche risposta :wink:, aggiungo che:
1- le modifiche sono già state fatte;
2- non le ho fatte io;
3- il testo è piuttosto lungo.
Pertanto non possa avvalermi dei pacchetti per revisioni che si possono trovare su CTAN… 😥Ogni idea è la benvenuta… 😀
Esiste su CTAN uno script Perl che fa proprio al caso tuo, si chiama latexdiff
`latexdiff [options] old.tex new.tex > diff.tex`
Ciao
Enrico
::spero che si possano postare problemi riguardanti la stampa postscript.
Ho preparato un catalogo con latex e generato il file postscript poi lo ho convertito in opuscolo. Listruzione iniziale è stata
$psnup -l -pA4 -2 -s.7 catalogo.ps > 2up.ps
cioè ho messo in orizzontale due pagine per foglio.
Il problema che ho notato è che la stampa non coincide con il file visualizzato con evince, subisce una traslazione verticale verso il basso di un paio di centimetri.
Qualcuno ha riscontrato un simile problema e lo ha risolta.
s.o. gnu/linux distribuzione fedora 6 con gnome.Prova ad aggiungere l’opzione -PA4; -p stabilisce il formato di pagina di arrivo, -P quello di partenza. Se non lo metti, prende il default che potrebbe essere letter.
Prova anche a scrivere “a4” e non “A4”, magari è quello.
Ciao
Enrico
::Come risolvere? Metti \leavevmode prima di \begin{lstlisting}.
Ok, funziona. Giusto per capire, cos’è che fa esattamente \leavevmode?
Fa cominciare un capoverso, senza però inserire il rientro. Ritengo che il problema abbia a che fare con la valutazione di \everypar, roba da TeXnici. L’importante è aver trovato un rimedio.
Ciao
Enrico
::[quote]i titoli delle subsubsection sono attaccati (verticalmente) al testo immediatamente prima.
Come si può modificare quest’aspetto?Che classe usi? Hai impiegato qualche pacchetto che modifica la composizione dei titoli? Puoi fare un esempio minimo?
Le classi:
`\documentclass[a4paper,oneside,10pt,italian]{book}\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{url,amsfonts,epsfig}\usepackage{graphicx}
\DeclareGraphicsRule{.png}{bmp}{.bb}{}\usepackage{listings}
\usepackage{xcolor}
\lstset{
backgroundcolor=\color{lightgray},
postbreak=\space, breakindent=5pt, breaklines
} `La visualizzazione “strana” avviene qui:
`
\subsection{Creazione del language model}
I passi fondamentali per la creazione di un language model…\subsubsection{1. text2wfreq}
\begin{lstlisting}
cat corpus | text2wfreq > corpus.wfreq
\end{lstlisting}Il comando text2wfreq prendi in input un file di testo…
\subsubsection{2. wfreq2vocab}
\begin{lstlisting}
cat corpus.wfreq | wfreq2vocab -top 20000 > corpus.vocab
\end{lstlisting}`[/quote]
Non ci crederai, ma la colpa è dell’ambiente lstlisting subito dopo il titolo della subsubsection. Se infatti ci metti del testo, l’effetto sparisce. Prova a guardare la documentazione di listings, magari c’è scritto; se no, sarebbe il caso di segnalarlo all’autore.Come risolvere? Metti \leavevmode prima di \begin{lstlisting}.
Un paio di altre osservazioni: il pacchetto epsfig è obsoleto e non va chiamato mai. Né va dato il comando \DeclareGraphicsRule: pdflatex sa benissimo come operare sulle immagini png.
Se poi vuoi numerare automaticamente la subsubsection, ma non portarti dietro anche tutti gli altri numeretti, scrivi nel preambolo
`\setcounter{secnumdepth}{3}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}}`
Se proprio vuoi il punto dopo il numero, cosa che non ti consiglio per uniformità con il resto del documento, puoi usare la seguente magia:
`\makeatletter
\let\@orig@seccntformat\@seccntformat
\renewcommand\@seccntformat[1]{%
\expandafter\ifx\csname the#1\endcsname\thesubsubsection
\thesubsubsection.
\else
\@orig@seccntformat{#1}%
\fi}
\makeatother`
Ciao
Enrico
::Salve,
in un documento LaTeX, in una subsection ho inserito una serie di subsubsection. Quando creo il pdf il risultato è che i titoli delle subsubsection sono attaccati (verticalmente) al testo immediatamente prima.Come si può modificare quest’aspetto?
Non mi risulta. Che classe usi? Hai impiegato qualche pacchetto che modifica la composizione dei titoli? Puoi fare un esempio minimo?
Ciao
Enrico
4 Ottobre 2007 alle 20:08 in risposta a: Urgente: problemi numerazione pagine per tesi fronte-retro #15954::mi aggancio a questa discussione. Dunque uso la classe scrreprt di Koma script con twoside e openright.
Come faccio per eliminare il numero di pagina sulle pagine bianche? Praticamente vorrei che per esempio la pagina dell´indice delle figure abbia il numero 1, la pagina dietro bianca senza numero, e la pagina successiva p.e. indice delle tabelle il numero 3, ecc.
Usa l’opzione cleardoubleempty (pagina 40 della documentazione).
Ciao
Enrico
::Grazie mille Andrea! Ora è una meraviglia. Tra l’altro a me non da nemmeno il warning 😉 Il codice che hai scritto è un po’ meno intuitivo dell’altro ma è il prezzo da pagare.
EDIT:
scusami ma ho provato a sostituire le righe del contatore esempio con:\newcounter{esempio}
\numberwithin{esempio}{chapter}
\renewcommand{\theesempio}{\thechapter.\arabic{esempio}}ma ottengo errori. Ovviamente il mio obiettivo è ottenere la numerazione in base al capitolo.
`\newcounter{esempio}[chapter]`
dovrebbe essere sufficiente.Ciao
Enrico
4 Ottobre 2007 alle 17:46 in risposta a: disporre tabella in orizzontale splittata su più fogli #8573::Esercizio: perché ho usato \z@skip e \p@?
Ora non posso provare, perché non ho una distribuzione sotto mano.
Ma non era uguale scrivere 0pt e 10pt seguiti da \relax, come hai fatto dopo?
oppure sotto edef non funge?Sarebbe stato quasi lo stesso; ma fra “\z@skip” e “0pt plus 0pt minus 0pt” c’è una differenza di 21 token.
Che differenza c’è tra \def, \gdef \edef, \long\def…non so se ce ne sono altri
Qui ci vorrebbe una lunga discussione. Una definizione è della forma
`{ }`
può essere \def, \gdef, \edef oppure \xdef; \gdef e \xdef sono uguali a \def e \edef, rispettivamente, ma il viene definito globalmente. La differenza sostanziale fra \def e \edef è che il
, nel secondo caso, viene espanso. Ovviamente non vengono eseguiti i comandi inespandibili, ma solo eseguita l’espansione: quindi la definizione data è equivalente a
`\def\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
}`
L’alternativa
`\edef\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
\table}`
non avrebbe funzionato, perché l’espansione di \table richiede la ricerca di argomenti che non verrebbero trovati. Nel modo indiretto che ho usato, si ottiene solo il contenuto della lista di token \toks@ che è l’espansione “di primo livello” di \table.È ovvio poi che \def\table{…\table} non può funzionare. Ma nemmeno \def\table{…\the\toks@}, perché nel momento in cui usiamo \table potremmo non avere più la lista giusta nel parametro \toks@. Occorrerebbe destinare un registro \toks a questo scopo: inutile spreco.
Il
è una qualunque combinazione di \long, \outer e \global; lasciamo perdere \outer; \global dice che la definizione è globale e non vale solo nel gruppo in cui è data. Con \long ammettiamo che negli argomenti del comando ci possa essere il token \par. Le definizioni di LaTeX con \newcommand sono tutte \long; quelle con \newcommand* no.
Ciao
Enrico
::Per dei motivi particolari sono costretto ad usare l’ambiente list (devo controllare manualmente la numerazione) e ho bisogno di indentare alcuni punti più degli altri. Cercando e scavando sono riuscito a fare in modo da riuscire ad aumentare l’indentatura della prima riga di un item, ma se il testo è parecchio viene vanificato. Vi faccio un esempio così ci capiamo meglio:
`\documentclass{minimal}\usepackage[italian]{babel}
\newcounter{line}
\setcounter{line}{0}\newcommand{\aumind}{\addtolength{\itemindent}{\parindent}\addtolength{\labelsep}{\parindent}}
\newcommand{\dimind}{\addtolength{\itemindent}{-\parindent}\addtolength{\labelsep}{-\parindent}}\begin{document}
\makeatletter
\begin{list}{\small \arabic{line}}{%
\topsep\z@%
\itemsep\z@ \labelsep 0.6em \itemindent\z@ \listparindent 2em%
\partopsep\z@ \parskip\z@ \parsep\z@%
\labelwidth 1.2em%
\leftmargin\labelwidth \addtolength{\leftmargin}{\labelsep}%
}
\makeatother
\stepcounter{line}
\item[\arabic{line}] a b c d e f g h i l m n o p q r s t u v z a b c d e f g
h i l m n o p q r s t u v z a b c d e f g h i l m n o p q r s t u v z a b
c d e f g h i l m n o p q r s t u v z a b c d e f g h i l m n o p q r s t
u v z a b c d e f g h i l m n o p q r s t u v z
\aumind
\stepcounter{line}
\item[\arabic{line}]a b c d e f g h i l m n o p q r s t u v z a b c d e f g
h i l m n o p q r s t u v z a b c d e f g h i l m n o p q r s t u v z a b
c d e f g h i l m n o p q r s t u v z a b c d e f g h i l m n o p q r s t
u v z a b c d e f g h i l m n o p q r s t u v z a b c d e f g h i l m n o
p q r s t u v z
\end{list}
\end{document}
`Se guardate l’item 1 è ok, anche l’indentazione della prima riga dell’item 2, il punto è che però vorrei che tutto l’item 2 abbia quella indentazione.
Scusate se sono stato confuso… mi avete capito?
Temo che anche aumentando \leftmargin non si ottenga nulla. In realtà ciò che stai chiedendo è di avere liste annidate: il secondo \item è in effetti una lista a sé stante annidata nella prima.
Già che ci sono: se nel secondo argomento di \list scrivi anche \usecounter{line}, non avrai bisogno di specificare \stepcounter{line} e \item[\arabic{line}]: basta \item
Ciao
Enrico
4 Ottobre 2007 alle 15:01 in risposta a: disporre tabella in orizzontale splittata su più fogli #8571::ma lo spazio tra didiscalia e tabella non si puó impostare direttamente tra le opzioni del pacchetto?
Metti questo nel preambolo:
`\makeatletter
\toks@=\expandafter{\table}
\edef\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
\the\toks@}
\makeatother`
Come funziona? Nelle classi normali (article, report e book), si prevede che la didascalia stia sotto anche alle tabelle, che non è spesso la pratica usuale.Perciò occorre un modo per cambiare la scelta dei parametri di spaziatura prima e dopo la didascalia, che sono 10pt e 0pt, rispettivamente.
Lo faccio però solo per le tavole fuori testo (ambiente table): nel parametro di tipo token \toks@ metto l’espansione di \table; poi eseguo una definizione con espansione di \table. In realtà l’unica cosa che viene espansa è il \the (gli altri comandi che compaiono non sono espandibili); l’espansione di \the, in questo caso, è il contenuto del parametro \toks@.
In questo modo ho ottenuto che la nuova definizione di \table coincide con la precedente, ma preceduta dall’assegnazione di nuovi valori ai parametri di spaziatura. Un modo del tutto equivalente sarebbe di scrivere
`\def\table{%
\abovecaptionskip\z@skip \belowcaptionskip 10\p@\relax
\@float{table}}`
perché \table è definito come “\@float{table}”. Il vantaggio dell’approccio seguito prima è che non è affatto necessario conoscere la definizione di \table.Un altro modo sarebbe di scrivere
`\let\origtable\table
\def\table{%
\abovecaptionskip 0pt\relax
\belowcaptionskip 10ptrelax
\origtable}`
ma con \expandafter e \the è più bello (e non si spreca un comando). 😀Esercizio: perché ho usato \z@skip e \p@?
Ciao
Enrico
3 Ottobre 2007 alle 20:59 in risposta a: disporre tabella in orizzontale splittata su più fogli #8569::Uso questo post per porre la mia domanda. Ho la seguente tabella
`{\footnotesize
\begin{sidewaystable}
\centering
\caption{Recognition rate for all the classes together}
\label{tab:k6.7}
\begin{tabularx}{\textwidth}{X|XXXXXXXXXXXXXXXXXXXXX}
\toprule
Ratio & KA & KUe & KUf & TEL & TOd & TOu & WKe & WKs & AD & AL & AN & AND & CL & DE & HA & JA & JO & MI & MIG & TI & VO \\
\midrule
KA &\textbf{0,75}& 0& 0& 0& 0& 0& 0& 0& 0& 0,125& 0& 0& 0& 0& 0& 0& 0,125& 0& 0& 0& 0\\
KUe &0 &\textbf{1} &0 &0 &0 &0& 0 &0 &0 &0 &0 &0 &0 &0& 0& 0& 0& 0& 0 &0 &0\\
KUf &0 &0& \textbf{1} &0 &0 &0& 0 &0 &0 &0 &0 &0& 0& 0& 0& 0 &0 &0 &0 &0 &0\\
TEL &0 &0 &0 &\textbf{1} &0& 0 &0 &0& 0 &0& 0& 0 &0 &0 &0& 0 &0 &0 &0& 0& 0\\
TOd &0 &0 &0 &0 &\textbf{1} &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0\\
TOu &0 &0 &0 &0 &0& \textbf{1} &0 &0 &0 &0 &0 &0 &0& 0 &0 &0 &0& 0& 0 &0& 0\\
WKe &0 &0,125 &0 &0 &0 &0& \textbf{0,875}& 0 &0& 0& 0 &0 &0 &0 &0 &0 &0 &0 &0 &0& 0\\
WKs &0 &0 &0 &0 &0 &0 &0 &\textbf{1} &0 &0 &0 &0&0 &0 &0 &0 &0&0 &0 &0 &0\\
AD &0 &0 &0 &0 &0 &0 &0 &0 &\textbf{0,875} &0 &0 &0 &0 &0 &0 &0 &0,125& 0& 0& 0& 0\\
AL &0 &0 &0 &0 &0 &0,375& 0& 0& 0& \textbf{0,375}& 0& 0,125& 0& 0,125& 0& 0& 0& 0& 0& 0& 0\\
AN &0 &0 &0 &0 &0,125& 0 &0 &0& 0 &0 &\textbf{0,75}& 0& 0 &0 &0,125 &0 &0 &0 &0 &0 & 0\\
AND &0 &0 &0 &0 &0 &0 &0 &0 &0 &0& 0 &\textbf{0,75}& 0,125 &0 &0,125 &0& 0 &0& 0& 0 & 0\\
CL &0 &0 &0 &0 &0,125 &0 &0 &0 &0,125& 0 &0 &0 &\textbf{0,625} &0 &0 &0& 0& 0& 0& 0& 0,125 \\
DE &0 &0 &0 &0 &0 &0,25& 0& 0 &0 &0 &0 &0 &0& \textbf{0,625}& 0 &0 &0,125 &0 &0 &0 & 0\\
HA &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &\textbf{0,75}& 0 &0 &0 &0 &0 &0,25\\
JA &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0,125 &0 &0,125& 0& \textbf{0,75}& 0& 0& 0& 0& 0\\
JO &0 &0 &0 &0 &0 &0& 0& 0 &0 &0 &0 &0& 0 &0 &0 &0 &\textbf{1}& 0 &0 &0& 0 \\
MI &0 &0& 0& 0 &0 &0& 0& 0& 0& 0 &0& 0 &0 &0& 0& 0& 0 &\textbf{0,5}& 0,375& 0& 0,125\\
MIG &0 &0 &0 &0& 0& 0,125& 0& 0& 0 &0 &0 &0& 0& 0 &0& 0& 0 &0& \textbf{0,75}& 0,125 & 0\\
TI &0 &0 &0 &0& 0 &0 &0& 0 &0& 0 &0& 0,125 &0 &0 &0 &0& 0& 0& 0 &\textbf{0,75}& 0,125\\
VO &0& 0& 0 &0 &0 &0& 0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0,125 &0 &0 &\textbf{0,875}\\
\bottomrule
\end{tabularx}
\end{sidewaystable}\par}`
Non riesco ancora a farla stare nella pagina inorizzontale. E pure il testo fuoriesce dalle colonne. Cosa si potrebbe fare?Scrivi così:
\begin{sidewaystable}
\centering
\caption{Recognition rate for all the classes together}
\label{tab:k6.7}
\medskip
\footnotesize\setlength{\tabcolsep}{.5\tabcolsep}
\begin{tabular}{l*{22}{c}}
\toprule
…
\bottomrule
\end{tabular}
\end{sidewaystable}[/code]
Riducendo lo spazio tra le colonne alla metà di quello usuale, forse riesci a guadagnare lo spazio necessario.Nota come \footnotesize può andare in un altro posto, riducendo i problemini di sintassi e anche il \medskip fra la didascalia e la tabella. Non userei tabularx, non ha molto senso.
Ciao
Enrico
::Quanto alle immagini: se le vuoi nell’enunciato, non ha senso metterle in un ambiente “figure”, un ambiente “center” basta e avanza. Il comando \includegraphics può essere dato ovunque nel documento, non solo nell’ambiente figure.
Infatti per ora ho risolto in questo modo. Solo non immaginavo che in un questo ambiente si potesse presentare un errore così “grave” e non capisco ancora perchè accade.
Non puoi inserire un oggetto galleggiante (figure o table) dentro una minipage. Non ha alcun senso e TeX non lo ammette: il perché è del tutto evidente.
Dal TeXbook (parlava di una cosa diversa, però ci sta bene anche qui): if you are upset about this, you shouldn’t be.
Ciao
Enrico
-
AutoreRisposte