Risposte nei forum create
-
AutoreRisposte
-
::
antonio.macrì” post=65787
La “metatabella” consiste nel definire
…Grazie, alla fine ho fatto così.
Un paio di domandine:
[ol]
[li]I commenti che metti alla fine di alcune righe sono solo per scrupolo, giusto? Quei comandi li uso solamente nel preambolo.[/li]
[li]Diverse volte Miede ridefinisce le lunghezze:
`\renewcommand{\cftsecindent}{0em}`
È concettualmente sbagliato, giusto? Ci metterei:
`\setlength{\cftsecindent}{\z@} % già che ci sono ottimizzo un po'`
Altrimenti il registro dimensionale che conteneva il valore di \cftsecindent rimane inutilizzato, vero?
[/li]
[/ol]Grazie ancora!
Sì, metto % per abitudine. Ovviamente, se \cftsecindent è un registro dimensionale, è una sciocchezza usare \renewcommand.
Ciao
Enrico
::antonio.macrì” post=65783Grazie.
In ogni caso, la strategia migliore è quella di scegliere una delle due sintassi e lavorare con quella; supponiamo tu voglia quella di tocloft:
`\ifcth@memoir
\let\cftbeforechapskip\cftbeforechapterskip
…
\fi`
In altre parole definisci una tabella di equivalenze e lavori con i comandi di tocloft. Occupazione di memoria minima e sintassi invariata. Puoi anche ideare facilmente una “metatabella”.Ciao
EnricoCredo di non aver capito. Se faccio
`
\ifcth@memoir
\let\cftbeforechapskip\cftbeforechapterskip
\let\cftsecnumwidth\cftsectionnumwidth
\let\cftsubsecpresnum\cftsubsectionpresnum
…
\fi
\setlength{\cftbeforechapskip}{.1em}
\addtolength{\cftsecnumwidth}{\newchnumberwidth}
\renewcommand{\cftsubsecpresnum}{\scshape\MakeTextLowercase}
…
`
le istruzioni con \setlength e \addtolength funzionano, ma i \renewcommand no (e ce ne sono tanti, sono anzi i più numerosi). Dovrei fare:
`
\ifcth@memoir
\let\cftbeforechapskip\cftbeforechapterskip
\let\cftsecnumwidth\cftsectionnumwidth
\let\cftsubsecpresnum\cftsubsectionpresnum
… % quelli per \setlength, \addtolength e \renewcommand
\fi
\setlength{\cftbeforechapskip}{.1em}
\addtolength{\cftsecnumwidth}{\newchnumberwidth}
\renewcommand{\cftsubsecpresnum}{\scshape\MakeTextLowercase}
…
\ifcth@memoir
\let\cftsubsectionpresnum\cftsubsecpresnum
… % solo quelli per \renewcommand (invertiti)
\fi
`
ma mi pare prolisso. 😕Che metatabella intendi?
Già, con i \renewcommand non funziona: infatti per questi devi dire
`\let\cftsubsecpresnum\cftsubsectionpresnum
\def\cftsubsectionpresnum{\cftsubsecpresnum}`
A questo punto anche \renewcommand{\cftsubsecpresnum}{\scshape\MakeTextLowercase} funzionerà.La “metatabella” consiste nel definire
`\def\convertmemoirtotocloft#1#2{%
\expandafter\let\csname cftbefore#2skip\expandafter\endcsname\csname cftbefore#1skip\endcsname
…
\expandafter\let\csname cft#2presnum\expandafter\endcsname\csname cft#1presnum\endcsname
\expandafter\def\csname cft#1presnum\expandafter\endcsname\expandafter{\csname cft#2presnum\endcsname}
…
}`
da chiamare come
`\convertmemoirtotocloft{chapter}{chap}`
Si può lievemente migliorare accorgendosi che la struttura è molto simile:
`\def\convertmemoirtotocloftlet#1#2#3#4{%
\expandafter\let\csname cft#1#4#2\expandafter\endcsname\csname cft#1#3#2\endcsname}
\def\convertmemoirtotocloftdef#1#2#3#4{%
\convertmemoirtotocloftlet{#1}{#2}{#3}{#4}%
\expandafter\def\csname cft#1#3#2\expandafter\endcsname\expandafter{\csname cft#1#4#2\endcsname}`
e il codice di prima diventerebbe
`\def\convertmemoirtotocloft#1#2{%
\convertmemoirtotocloftlet{before}{skip}{#1}{#2}
…
\convertmemoirtotocloftdef{}{presnum}{#1}{#2}
…
}`
Al posto dei puntini metti tutti i comandi necessari e ti basterà dire
`\ifcth@memoir
\convertmemoirtotocloft{chapter}{chap}
\convertmemoirtotocloft{section}{sec}
…
\fi`Ciao
Enrico
::samiel” post=65772Sì, uso T1. E l’avvio del codice è
`\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}% font
\usepackage{microtype}
\usepackage{tgpagella}
\usepackage{tgadventor}
\usepackage{tgcursor}
\DeclareFontShape{T1}{qcr}{m}{n}{<->ssub*qcr/b/n}
\DeclareFontShape{T1}{qcr}{m}{it}{<->ssub*qcr/b/it}`
Ma il risultato è:
`! LaTeX Error: Font family `T1+qcr' unknown.See the LaTeX manual or LaTeX Companion for explanation.
Type Hfor immediate help.
…l.16 \DeclareFontShape
{T1}{qcr}{m}{it}{<->ssub*qcr/b/it}`M
Mancava un pezzettino alla mia risposta, adesso dovrebbe funzionare.
Ciao
Enrico
::pcgis” post=65770Buonasera a tutti.
Forse la domanda è banale, ma non riesco a capire perchè \newcolumntype all’interno di \newenvironment produce un errore:
`\documentclass[a4paper,10pt]{article}
\usepackage[italian]{babel}
\usepackage{array}
\usepackage{tabularx}\newenvironment{myTable1}{%
\tabularx{\textwidth}{>{\raggedleft}p{0.3\textwidth}|X}}%%
{\endtabularx}\newenvironment{myTable2}{%
\newcolumntype{V}[1]{>{\raggedleft}p{#1}}
\tabularx{\textwidth}{>V{0.3\textwidth}|X}}%
{\endtabularx}\begin{document}
\begin{myTable1}
colonna1 & colonna2
\end{myTable1}
%
\begin{myTable2} %%errore
colonna1 & colonna2
\end{myTable2}\end{document}`
Perchè se uso la definizione di myTable2 ottengo un errore? Dove sbaglio?
Il problema è che stai definendo un nuovo comando all’interno di una definizione di un nuovo comando (forse non sembra, ma è così). In effetti \newenvironment{xyz}[n]{Inizio}{Fine}` definisce \xyz e \endxyz: la parte “Inizio” è quella che definisce \xyz con n argomenti, mentre la parte fine definisce \endxyz che è sempre un comando senza argomenti. Analogamente, \newcolumntype{V}[n]{testo} definisce un comando interno \NC@find@V con n argomenti.
Quando si definisce un comando con argomenti \yyy all’interno della definizione di un altro comando \xxx, i parametri per \yyy devono essere indicati raddoppiando i simboli #:
`\newcommand\xxx{\newcommand\yyy[1]{fa' qualcosa con ##1}}`
Lo stesso vale nel tuo caso:
`\newenvironment{myTable2}{%
\newcolumntype{V}[1]{>{\raggedleft}p{##1}}%
\tabularx{\textwidth}{V{0.3\textwidth}|X}}%
{\endtabularx}`
anche se mi sembra una perdita di tempo:
`\newenvironment{myTable2}
{\tabularx{\textwidth}{>{\raggedleft}p{0.3\textwidth}|X}}
{\endtabularx}`
fa esattamente la stessa cosa.(Nella tua definizione manca un % e c’è un > di troppo.)
Ciao
Enrico
26 Novembre 2011 alle 13:38 in risposta a: [Risolto] Installazione MathTime Professional 2 – TL2011 #66846::ivan” post=65758Vorrà dire che non userò più \hfuzz \hbadness e \vbadness 🙁
Puoi mettere \hbadness=10000 e \vbadness=10000, se non vuoi messaggi oltre quelli di Overfull, ma stai semplicemente nascondendo le scoasse sotto il tappeto (scoasse = spazzatura, ndr). Una “badness” di 2000 è certamente eccessiva in una \hbox, visto che corrisponde a uno “stretch factor” di 2.71; con Computer Modern a corpo 10 questo significa che lo spazio tra le parole diventa, in punti,
3.33 + 1.67*2.71 = 7.86
(3.33pt è il normale spazio tra parole, 1.67pt è la quantità disponibile per l’allargamento, che viene moltiplicata per lo “stretch factor”).
Con badness=1000, lo spazio tra parole è circa 6.9pt, più accettabile perché è solo poco più del doppio dello spazio “ottimale”.
Nota TeXnica. Lo “stretch factor” si ottiene dividendo la “badness” per 100 ed estraendo la radice cubica. Se la badness è minore di 100, il valore può anche corrispondere allo shrink factor; TeX non strizza mai uno spazio oltre il massimo disponibile, quindi lo shrink factor non può mai essere maggiore di 1.
Ciao
Enrico
::antonio.macrì” post=65753Cosa mi consigli sul liberare la memoria? (La richiesta deriva anche da una mia “deformazione professionale” che mi suggerisce il principio dell’information hiding: nascondere (cancellare) i comandi usati internamente, principio che il LaTeX è piuttosto blando.)
Non mi preoccuperei; la quantità di memoria a disposizione con le distribuzioni moderne mette al sicuro da rischi: non sono una trentina di comandi che danno fastidio.
In ogni caso, la strategia migliore è quella di scegliere una delle due sintassi e lavorare con quella; supponiamo tu voglia quella di tocloft:
`\ifcth@memoir
\let\cftbeforechapskip\cftbeforechapterskip
…
\fi`
In altre parole definisci una tabella di equivalenze e lavori con i comandi di tocloft. Occupazione di memoria minima e sintassi invariata. Puoi anche ideare facilmente una “metatabella”.Ciao
Enrico
::ivan” post=65745Ciao a tutti
In sede di revisione finale ci si trova spesso a controllare il file .log per eliminare gli overfull e gli underfull box.
Qual è la strategia migliore da seguire secondo la vostra esperienza.
1) In alcuni casi, gli overfull box potrebero andarci bene. Per esempio una tabella che sborda ma che rimane entro lo spazio delle note a margine.
In questo caso esiste un modo per far sì che nel .log, un particolare overfull box non venga segnalato?`\makebox[\textwidth][l]{%
\begin{tabular}{…}
…
\end{tabular}}`ivan2) Qual è il valore consigliato per i tre parametri (ho indicato quelli che uso io attualmente)
`\hfuzz=1.5pt
\hbadness=2000
\vbadness=2000`
?
Nel secondo caso, è sottointeso, usando microtype.`\hfuzz=0.1pt
\hbadness=1000
\vbadness=1000`
Cioè i valori di default. 🙂ivan3) C’è un modo per dire a LaTeX di non andare a capo con una sola sillaba?
Per esempio:nel mezzo del cammin di nostra vi-
ta.E se sì ha senso o sono maggiori gli svantaggi?
`\addto\extrasitalian{\italianhyphenmins{3}{4}}`
Non vedo il grande vantaggio.ivan4) Se si va a capo in un titolo di sezione con \\, nel .log appare questo Warning:
`Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `\\' on input line 5.
`
Il comando di hyperref:
`\textorpdfstring{codicepertesto}{codiceperpdf}`
non funziona, nemmeno se preceduto da \protect. Funziona però all’interno di
\addcontentsline.Sicuro? Il comando è \texorpdfstring e \section{Un titolo di sezione\texorpdfstring{\\}{ }molto lungo} funziona certamente.
ivan5) Per sistemare problemi di riempimento verticale e/o orizzontale si usano spesso gli automatismi:
`\enlargethispage{}`
e
`
\looseness=
`Non potrebbe essere resa automatica questa scelta? Stavo pensando a un pacchetto (inesistente?) che in base ai valori di \vbadness
automaticamente allarghi la pagina precedente a quella che ha l’underfull vbox. Naturalmente in tal caso l’allargamento dovrebbe essere segnalato.
Visto che LaTeX fa molte scelte al posto nostro, perché non permettergli di scegliere, entro certi limiti, quali pagine allargare o restringere di una riga per migliorare il riempimento?
Automatismi?
No, non si può. Quando una pagina è uscita non ci si può più fare niente. E la scelta di quali pagine (o capoversi) allungare o accorciare non può essere automatica.
Ciao
Enrico
::samiel” post=65737Esiste un’opzione come
`\usepackage[bfseries]{tgcursor}`
(che ovviamente in tale forma non esiste)
per impostare il font in questione di default in grassetto?No. Supponendo che tu usi la codifica di output T1 puoi scrivere, dopo aver caricato tgcursor
`\sbox0{\fontsize{1}{1}\ttfamily x} % facciamo leggere il .fd relativo e carichiamo una versione innocua del font
\DeclareFontShape{T1}{qcr}{m}{n}{<->ssub*qcr/b/n}{}
\DeclareFontShape{T1}{qcr}{m}{it}{<->ssub*qcr/b/it}{}`
Ciao
Enrico
25 Novembre 2011 alle 17:48 in risposta a: problema con inputenc, dopo aver suddiviso il codice #6677624 Novembre 2011 alle 10:54 in risposta a: [RISOLTO] allineamento verticale del testo con \multirow #66711::marcob8986″ post=65644Ciao a tutti,
sto incontrando un problema nella creazione di una tabella.
premetto che ho cominciato ad usare LaTeX da poco, ma ci ho scritto una tesina di una 90ina di pagine per un progetto di un esame universitario con ottimi risultati.
Ora sto imbastendo la mia tesi di laurea, e sono partito per tempo 😀
Utilizzo TexShop su un Mac, direi aggiornato all’ultima versione in quanto faccio gli aggiornamenti con TexLiveUtility regolarmente.
veniamo al problema: qui c’è il codice che utilizzo e un immagine del risultato che ottengo per capirci meglio.
`\begin{table}[htb]\footnotesize % tab. problemi operation
\caption{Problemi relativi alla gestione operativa di un magazzino}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\begin{tabularx}{\columnwidth}{XXX}
\toprule
\multicolumn{2}{c}{\textsc{Problemi di gestione operativa del magazzino}} & \multicolumn{1}{c}{\textsc{Decisioni}} \\ \midrule
\multicolumn{2}{c}{Ricevimento e spedizione} & %
\begin{itemize}
\item assegnamento camion/piazzola
\item assegnamento ordine/camion
\item schedulazione partenze camion
\end{itemize}\\ \midrule
\multirow{3}{*}{Immagazzinamento} %
& Assegnamento SKUs ai reparti & {%
\begin{itemize}
\item assegnamento SKUs ai diversi reparti
\item allocazione dello spazio
\end{itemize} }\\ \cmidrule{2-3}
& Suddivisione in zone & {%
\begin{itemize}
\item assegnamento SKUs alle zone
\item assegnamento operatori alle zone
\end{itemize} }\\ \cmidrule{2-3}
& Assegnamento ubicazioni di magazzino & {%
\begin{itemize}
\item SLAP
\item specifica di classi di prodotti
\end{itemize} }\\ \midrule
\bottomrule
\end{tabularx}
\label{tab_operation}
\end{table}`
Click for large view – Uploaded with Skitch
come vedete la scritta “immagazzinamento” non è centrata verticalmente tra le righe che “spanna” il comando multirow.Io risolvo i problemi di \multirow semplicemente non usandolo. Metti “Ricevimento e spedizione” allineato con la prima riga: vivrai più felice e avrai tabelle migliori. 🙂
Ciao
Enrico
::claudio” post=65657devo scrivere dei numeri decimali ed per questo ho pensato a siunitx
delegando a lui la formattazione
`
\documentclass[10pt,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[italian]{babel}
\usepackage{siunitx}
\sisetup{
output-decimal-marker = {,}
}
\begin{document}
\[\frac{3}{10}=\num{0,3}\]
\num{10000000.10000001}
\end{document}
`
e questo mi ha portato a sbagliare come mi hanno già fatto notare
e a introdurre
`
\sisetup{
output-decimal-marker = {,}
}
`
e con questo ho risolto il problema dei decimali finiti
ma come si formatta un numero decimale periodico con siunitx?
non sono riuscito a trovare nulla
tranne che
`
\[\dfrac{7}{9}=0,77777777\cdots=0,\overline{7}\]
`
che non usa siunitx
che fare?
saluti
claudioQuante volte mai dovrai scrivere un numero del genere? Poche.
`0{,}\overline{7}`
Ciao
Enrico
-
AutoreRisposte