- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 9 mesi fa da .
-
Topic
-
Sto cercando di emulare \areaset in memoir, ma ho un problema con le dimensioni orizzontali.Da quello che ho capito, in teoria dovrebbe essere \spinemargin=1in+\oddsidemargin, ma in pratica non è così.
Innanzitutto, i parametri orizzontali che ho sono:
- B margine di rilegatura
- X larghezza della gabbia del testo.
Le specifiche richiedono che lo spazio bianco orizzontale, escluso il margine di rilegatura, (cioè \paperwidth-\textwidth-B) vada distribuito per un terzo dal lato interno e due terzi in quello esterno.
Ho scritto molto semplicemente così:
`\setbinding{\B}
\setlrmargins{*}{*}{2}`
e tutto funziona, almeno in teoria: cioè finché non chiamo \checkandfixthelayout, il quale tronca la parte decimale (in punti) di \oddsidemargin e \evensidemargin. Dopo un po’ di indagini ho scoperto che il problema è che \fixthelayout fa
`\@settopoint\textwidth
\@settopoint\oddsidemargin
\@settopoint\evensidemargin`Perché? Che significa?
Se mi prendo la licenza di impedirglielo scrivendo:
`
\let\@settopoint\@gobble
\checkandfixthelayout[fixed] % specifico fixed`
(non dentro un gruppo), i valori di \oddsidemargin e \evensidemargin non sono più troncati (e quindi \spinemargin=\oddsidemargin+1in), ma la gabbia continua a non coincidere con quella di \areaset.Meglio: le due gabbie hanno stessa altezza e stessa larghezza, coincide anche la posizione verticale delle gabbie nella pagina (a parte qualche errore di troncamento o simili), ma continuano a essere visivamente sfasate in orizzontale. Comincio a non raccapezzarmi più. Come bisogna procedere? Voglio usare per quanto possibile i comandi di memoir, solo come ultima spiaggia imposto tutto a mano.
😕Riporto un esempio compilabile:
`\newlength{\B}
\setlength{\B}{0mm} % messo a zero: il problema non dovrebbe essere nel binding
\newlength{\X}
\setlength{\X}{288pt}
\newlength{\Y}
\setlength{\Y}{555pt}\ifcase0
\documentclass[headinclude,footinclude,10pt,a5paper]{scrbook}
\usepackage[pass]{geometry}
\or
\documentclass[10pt,a5paper]{memoir}\makeatletter
\newlength{\cth@tempdim}
\def\areaset[#1]#2#3{
% \headheight, \headsep e \footskip sono esattamente quelli delle classi KOMA
\headheight=15\p@
\advance\headheight by \f@size\p@
\advance\headheight by -10\p@
\headsep=1.5\baselineskip
\footskip=3.5\baselineskip
\cth@tempdim=#3
\advance\cth@tempdim by -\headheight
\advance\cth@tempdim by -\headsep
\advance\cth@tempdim by -\footskip
\settypeblocksize{\cth@tempdim}{#2}{*}\setbinding{#1}
\setlrmargins{*}{*}{2}\cth@tempdim=\paperheight
\advance\cth@tempdim by -#3
\divide\cth@tempdim by 3
\advance\cth@tempdim\headheight
\advance\cth@tempdim\headsep
\setulmargins{\cth@tempdim}{*}{*}\setheadfoot{\headheight}{\footskip}
\setheaderspaces{*}{\headsep}{*}% tralascio le impostazioni per le note a margine
\checkandfixthelayout[fixed]
\typeout{\the\dimexpr\spinemargin-\oddsidemargin-1in}
}
\makeatother
\fi\areaset[\B]{\X}{\Y}
\def\print#1{
\ttfamily\string#1 &
\ifx#1\undefined\else\the#1\fi\\
}\usepackage[T1]{fontenc}
\begin{document}
\begin{tabular}{ll}
\print\paperwidth
\print\textwidth
\print\oddsidemargin
\print\evensidemargin
\hline
\print\stockwidth
\print\trimedge
\print\spinemargin
\print\foremargin
\end{tabular}
\end{document}`Grazie,
Antonio
- Devi essere connesso per rispondere a questo topic.