- Questo topic ha 18 risposte, 8 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 6 mesi fa da
antonio.macrì.
-
CreatoreTopic
-
22 Ottobre 2007 alle 23:11 #18017::
Salve a tutti.Sottopongo un quesito che non riesco a risolvere. E’ un argomento che non sono ancora riuscito a trovare altrove, né qui né su altri forum.
Nel layout di un libro che sto scrivendo ho l’esigenza di creare dei “box”, per così dire, con salti pagina.
Mi spiego con la seguente immagine:
L’area in grigio è la gabbia in cui fluisce il testo normale.
L’area in arancione è-
1. come se fosse un “layout nel layout”, in cui far scorrere più paragrafi di testo,
2. possibilmente anche un oggetto flottante,
3. che possa essere assegnato in frazioni dell’altezza di pagina e che
4. possa comprendere anche più di un salto pagina.Immagino che si tratti di un quesito alquanto esigente e che non sia affatto banale ottenere un layout simile con LaTeX.
Sarò grato a chi possa darmi indicazioni utili a risolvere il problema.Agostino
-
CreatoreTopic
-
AutoreRisposte
-
-
23 Ottobre 2007 alle 17:29 #18018::
Riflettendoci,
credo che la logica con cui voglio riempire l’area arancione della figura
è proprio la stessa con cui viene riempita una footnote.Se uno scrive una footnote decisamente lunga, verrà occupato uno spazio maggiore di quello destinato ad essa nella la pagina in cui è stata inserita. Quindi il testo della footnote si estenderà alla parte della pagina successiva destinata alle note a piè pagina. Ed eventualmente ciò potrà estendersi anche alla pagina ancora seguente e così via.
Solo che io vorrei fare una cosa simile nella parte alta della pagina.
Agostino
-
24 Ottobre 2007 alle 11:58 #18019::
Non penso sia possibile. Come dici tu si potrebbe creare una cosa simile alla footnote però poi è un po’ difficile far riprendere la strata giusta nela pagina i+3.Inoltre gli oggetti flottanti non si possono inserire dentro gli ambienti creati con framed. Ho provato e non va. Si potrebbe rimediare con picins oppure con minipage e comando captionof del pacchetto caption. Comunque quello che desideri credo che non si possa fare.
Ciao
Andrea
-
24 Ottobre 2007 alle 12:13 #18020::
Ciao Andrea,
grazie del commento.
In effetti che questa cosa sia flottante non mi interessa più di tanto. Quello che mi interessa è ritagliare nella parte alta di una o più pagine consecutive dello spazio in cui scrivere del testo a sé stante.Una footnote molto lunga può prendere in teoria una o più pagine. Ed effettivamente quando la footnote finisce la pagina successiva di testo è tutta piena e riprende tranquillamente.
Agostino
-
24 Ottobre 2007 alle 12:55 #18021::
A questo punto si potrebbe porre il seguente problema:Come si potrebbe fare a mettere una footnote in alto alla pagina
anziché in basso ?A occhio, credo che modificando alcuni registri che contengono le dimensioni chiave del punto di inserimento della footnote e dell’altezza della footnote
la cosa si possa fare.
Purtroppo non so come farlo.Agostino
-
24 Novembre 2007 alle 10:12 #18022::
Salve a tutti.Ho lavorato al problema posto in questo thread e credo di essere arrivato ad una soluzione decente. Nel farlo ho ricevuto i consigli illuminanti di Claudio Beccari, che ringrazio. La soluzione che presento qui è senz’altro suscettibile di miglioramenti e modifiche future.
Premessa
Intanto, incollo un esempio di layout reale che mi interessa riprodurre:

Il problema in questione è uno di quelli che si risolve semplicemente con un impaginatore tipo Xquark, o simili altri programmi, cose professionali. Alternativamente si può provare con il freeware Scribus. Il mio scopo è di utilizzare LaTeX ed ho cercato una soluzione che non si servisse di strumenti “esterni”.
Soluzione
Ho creato l’ambiente:
`\longmedal[]{ }`
ispirandomi al nome “medaglione” usato da Beccari nella guida a LaTeX distribuita da GuIT. L’ambiente longmedal si avvale del pacchetto xkeyval per il passaggio dei parametri. Un esempio è il seguente:
`
\definecolor{mylightgray}{rgb}{0.95,0.95,0.95}
%
\longmedal[%
width=1.1\textwidth, height=0.6\textheight,
topfraction=0.65,
innermargin=1.5cm,outermargin=0.2cm,
columns=1,
drawframe=true,drawsideframe=false,
framerule=2pt,frameheadrule=2.5em,framesep=2mm,
framecolor=darkgray,framebgcolor=mylightgray,
label={lmd:OneA}]%
{
Test testo testo testo …
}
`Uno dei parametri più significativi è “height”: esso indica l’altezza complessiva del medaglione. Un altro parametro interessante è “columns”: ho voluto gestire anche un numero superiore a uno di colonne di testo avvalendomi del pacchetto multicols. Il significato degli altri parametri è intuitivo.
Incollo qui il risultato di due esempi di cui darò il codice più avanti:
esempio 1


esempio 2

L’algoritmo che divide il testo all’interno dell’ambiente e lo fa fluire nei diversi medaglioni è abbastanza semplice:
1. Si raccoglie tutto il “materiale”, cioè il testo, in una vbox.
2. Si comincia ad estrarre la parte alta della vbox con il comando
primitivo \vsplit di TeX di altezza prefissata (height).3. Si utilizza un nuovo tipo di float (pacchetto float) con specificatore [t]
ed imponendo, tra le altre cose, topfraction=,
topnumber = 1, bottomnumber=0, totalnumber=1.4. Se l’altezza rimanente della vbox è ancora superiore a height
si riparte dal punto 2, altrimenti si applica il punto 3 alla vbox e
si finisce.Per quanto riguarda l’altezza delle diverse scatole in cui è suddiviso il
testo ho scelto di adottare rigidamente un’altezza costante
e gestire il contenuto con delle \rule di LaTeX opportune
(si vedono passando l’opzione debug=true)Per controllare la parità del numero di pagina ho usato il pacchetto
chngpage ( http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oddpage ).Codice
Allego il risultato del mio lavoro fino a questo punto.
`
% (c) 2007 Agostino De Marco
% Distributed freely. You can redistribute it freely.\ProvidesFile{longmedal.sty}
\ProvidesPackage{longmedal}\typeout{Package: `longmedal' v0.1\space <2007/11/23> (Agostino De Marco)}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{%
float,caption,geometry,multicol,ifthen,calc,
afterpage,
xkeyval,
color,
placeins,
chngpage% for \checkoddpage, \ifcpoddpage , http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oddpage
}%————————————————————
% the new float type% http://www.guit.sssup.it/phpbb/viewtopic.php?t=1318&highlight=floatstyle
\newcommand\floatc@LMDfloatstyle[2]{{\@fs@cfont #1} #2\par}
\newcommand\fs@LMDfloatstyle{%
\def\@fs@cfont{\bfseries}%
\let\@fs@capt\floatc@ruled% \relax%
\let\@fs@capt\relax%
\def\@fs@pre{\relax}% {\hrule\kern2pt}%
\def\@fs@post{\relax}% {\vskip-5pt\hrule\kern2pt}% linea sotto
\def\@fs@mid{\relax}% {\kern2pt\hrule\kern2pt\vskip-2pt}%
%
\let\@fs@iftopcapt\iftrue% ensures caption position at top of float, superseeds \captionsetup
% \let\@fs@iftopcapt\iffalse% caption at bottom
%
% no caption at all, see caption.sty
\def\caption@@make##1##2{}%
}\DeclareCaptionStyle{LMDfloatstyle}{labelfont=bf,labelsep=space,strut=off,position=top}
\captionsetup[LMDfloatstyle]{textfont=it,position=top,belowskip=0pt}\floatstyle{%
LMDfloatstyle% other standard styles: plain, ruled, boxed
}
\newfloat{MedalFloat}{t}{lom}[chapter]
\floatname{MedalFloat}{Insight Box}%————————————————————
% the name to be displayed in the heading\newcommand{\LMDname}{\textsc{Insight Box}\ \theMedalFloat}
%————————————————————
% Box outer stuff: colors of frame and background, rule width, etc.\newcommand*{\LMDframecolor}{black}
\newcommand*{\LMDframebgcolor}{gray}
\newlength{\LMDframesep} \setlength{\LMDframesep}{\fboxsep}
\newlength{\LMDframerule} \setlength{\LMDframerule}{\fboxrule}
\newlength{\LMDframeheadrule} \setlength{\LMDframeheadrule}{2em}%————————————————————
% variables\newcounter{LMDcolumns} \setcounter{LMDcolumns}{1}
\newcounter{LMD@columns} \setcounter{LMD@columns}{1}\newlength{\LMDwidth} \setlength{\LMDwidth}{\textwidth}
\newlength{\LMDwidtha} \setlength{\LMDwidth}{\textwidth}
\newlength{\LMDwidthb} \setlength{\LMDwidth}{\textwidth}\newlength{\LMDinnermargin} \setlength{\LMDinnermargin}{0.5cm}
\newlength{\LMDoutermargin} \setlength{\LMDoutermargin}{0.5cm}\newlength{\LMDevenhoffset} \setlength{\LMDevenhoffset}{0cm}
\newlength{\LMDoddhoffset} \setlength{\LMDoddhoffset}{0cm}\newlength{\LMDheightmax} \setlength{\LMDheightmax}{0.6\textheight}
\newlength{\LMDheight} \setlength{\LMDheight}{\LMDheightmax-\LMDframeheadrule-2\baselineskip}\newlength{\lmd@dimena} \setlength{\lmd@dimena}{\z@}
\newcommand{\lmd@topfraction}{\topfraction}
\newcommand{\lmd@setfloatpar}{%
\renewcommand{\bottomfraction}{0.2}%
\setcounter{topnumber}{1}%
\setcounter{bottomnumber}{0}%
\setcounter{totalnumber}{1}%
}%————————————————————————————-
% the main environment%………………………………………………………….. xkeyval settings
% define a command \longmedal[key1=value1,key2=value2,…]{…}
% the parameters are set using xkeyval approach\newdimen\@lmdinnermargin
\newdimen\@lmdoutermargin
\newdimen\@lmdframesep
\newdimen\@lmdframerule
\newdimen\@lmdframeheadrule
\newdimen\@lmdoddhoffset
\newdimen\@lmdevenhoffset\define@key{lmd}{width}{\def\@lmdwidth{#1}
\setlength{\LMDwidth}{\@lmdwidth}}%
\define@key{lmd}{height}{\def\@lmdheight{#1}%
\setlength{\LMDheightmax}{\@lmdheight}}% <--- NB \define@key{lmd}{topfraction}{\def\@lmdtopfraction{#1} \renewcommand*{\topfraction}{\@lmdtopfraction}}% \define@key{lmd}{textfraction}{\def\@lmdtextfraction{#1} \renewcommand*{\textfraction}{\@lmdtextfraction}}% \define@key{lmd}{bottomfraction}{\def\@lmdbottomfraction{#1} \renewcommand*{\bottomfraction}{\@lmdbottomfraction}}% \define@key{lmd}{columns}{\def\@lmdcolumns{#1}% \setcounter{LMD@columns}{\@lmdcolumns}% \setcounter{LMDcolumns}{\@lmdcolumns}% }% \define@key{lmd}{name}{\def\@lmdname{#1} \renewcommand{\LMDname}{\@lmdname}}% \define@key{lmd}{label}{\def\@lmdlabel{#1}}% \define@key{lmd}{caption}{\def\@lmdcaption{#1}}% \define@key{lmd}{innermargin}{\@lmdinnermargin=#1 \setlength{\LMDinnermargin}{\@lmdinnermargin}}% \define@key{lmd}{outermargin}{\@lmdoutermargin=#1 \setlength{\LMDoutermargin}{\@lmdoutermargin}}% \define@key{lmd}{oddhoffset}{\@lmdoddhoffset=#1 \setlength{\LMDoddhoffset}{\@lmdoddhoffset}}% \define@key{lmd}{evenhoffset}{\@lmdevenhoffset=#1 \setlength{\LMDevenhoffset}{\@lmdevenhoffset}}% \define@key{lmd}{framesep}{\def\@lmdframesep{#1} \setlength{\LMDframesep}{\@lmdframesep}}% \define@key{lmd}{framerule}{\def\@lmdframerule{#1} \setlength{\LMDframerule}{\@lmdframerule}}% \define@key{lmd}{frameheadrule}{\def\@lmdframeheadrule{#1} \setlength{\LMDframeheadrule}{\@lmdframerule}}% \define@key{lmd}{framecolor}{\def\@lmdframecolor{#1} \renewcommand*{\LMDframecolor}{\@lmdframecolor}}% \define@key{lmd}{framebgcolor}{\def\@lmdframebgcolor{#1} \renewcommand*{\LMDframebgcolor}{\@lmdframebgcolor}}% % ........................................................................ % boolean options \newboolean{lmd@drawframe}\setboolean{lmd@drawframe}{false} \newboolean{lmd@drawsideframe}\setboolean{lmd@drawsideframe}{false} \newboolean{lmd@debug}\setboolean{lmd@debug}{false} \newboolean{lmd@isodd}\setboolean{lmd@isodd}{false} \define@boolkey{lmd}{drawframe}{% \ifKV@lmd@drawframe \setboolean{lmd@drawframe}{true} \else \setboolean{lmd@drawframe}{false} \fi }{% \PackageWarning{longmedal}{erroneous input for drawframe, ignored}% } \define@boolkey{lmd}{drawsideframe}{% \ifKV@lmd@drawsideframe \setboolean{lmd@drawsideframe}{true} \else \setboolean{lmd@drawsideframe}{false} \fi }{% \PackageWarning{longmedal}{erroneous input for drawsideframe, ignored}% } \define@boolkey{lmd}{debug}{% \ifKV@lmd@debug \setboolean{lmd@debug}{true} \else \setboolean{lmd@debug}{false} \fi }{% \PackageWarning{longmedal}{erroneous input for debug, ignored}% } % ........................................................................ \newcommand{\longmedal}[2][]{% % % xkeyval related stuff % \def\@lmdwidth {}% treated as macro, not as a length \def\@lmdheight {}% treated as macro, not as a length \def\@lmdcolumns {}% treated as macro, not as a counter \def\@lmdtopfraction {}% \def\@lmdbottomfraction {}% \def\@lmdtextfraction {}% \def\@lmdname {}% \def\@lmdcaption {}% \def\@lmdlabel {}% \def\@lmdframecolor {black}% \def\@lmdframebgcolor {white}% % \@lmdframeheadrule=2em%\fboxrule \@lmdframerule=0pt%\fboxrule \@lmdframesep=\fboxsep% \@lmdinnermargin=0pt% \@lmdoutermargin=0pt% \@lmdoddhoffset=0pt% \@lmdevenhoffset=0pt% % % parse key-value arguments % \setkeys{lmd}{#1}% % % environment initial settings % % height % having issued: \setlength{\LMDheightmax}{\lmd@height} % i.e. the maximum height-wise length is that given by user... % \setlength{\LMDheight}{\LMDheightmax-\LMDframeheadrule -\baselineskip } % % width \ifnum\value{LMD@columns}=1% % single column \setlength{\LMDwidtha}{\LMDwidth% -2\@lmdframesep-2\@lmdframerule% }% needs calc \else % multiple columns \setlength{\LMDwidtha}{\LMDwidth% -2\fboxsep-2\fboxrule% -\value{LMD@columns}\columnsep+\columnsep% -\value{LMD@columns}\columnseprule+\columnseprule% }% needs calc \fi % % the width of text to be splitted \setlength{\LMDwidthb}{\LMDwidtha% -\LMDinnermargin% some convenient margin -\LMDoutermargin% some convenient margin }% needs calc % \divide\LMDwidthb\value{LMD@columns} % % tweaks some float settings (could use \lmd@setfloatpar ) \renewcommand{\bottomfraction}{0.2}% \setcounter{topnumber}{1}% \setcounter{bottomnumber}{0}% \setcounter{totalnumber}{1}% % %------------------------------------------------------------------- % \LMDbox is the main box: it stores the environment ``material'' % \setbox\LMDbox=\vbox\bgroup\hsize\LMDwidthb\noindent #2 \par\egroup% this closes the main box: now it contains the ``material'' % %------------------------------------------------------------------- \setbox\LMDbox\vbox{\unvbox\LMDbox}% unbox in itself % % % now the main macro: check for the height of \LMDbox and possibly split % (NO RECURSION, while loop instead) \lmd@makeboxes{} } \newboolean{@lmd@issplit} \setboolean{@lmd@issplit}{false} \newcounter{@lmd@howmanychunks} \setcounter{@lmd@howmanychunks}{0} \newlength{\lmd@filler}% used in last chunk if split occurred \setlength{\lmd@filler}{0pt} %\newsavebox{\LMDbox} %\newsavebox{\LMDboxa} %\newsavebox{\LMDboxb} \newbox\LMDbox \newbox\LMDboxa \newbox\LMDboxb \def\lmd@makeboxes#1{\relax % % stores the desired height of boxes in the float(s) % Note 1: user might have set \topfraction by hand outside or inside the environment % Note 2: user might have set \LMDheight by hand outside or inside the environment % % % Main loop: strip off the top part of \LMDbox until the height of % remaining part is less than the derired height of the float % % % \@whiledim\ht\LMDbox>\LMDheight%
\do{%
%
% we want to put the top part of \LMDbox in auxiliary boxes \LMDboxa and \LMDboxb
%
\ifnum\value{LMD@columns}>1%
\setbox\LMDboxa=\vsplit\LMDbox to \value{LMD@columns}\LMDheight%
%
\setbox\LMDboxb=\vtop{% <--- NB % \setlength{\linewidth}{\LMDwidth}% multicols balances column widths according to \linewidth \begin{multicols}{\value{LMD@columns}} \unvbox\LMDboxa \end{multicols} % }% \setbox\LMDboxa=\box\LMDboxb \else \setbox\LMDboxa\vsplit\LMDbox to \LMDheight% % \setbox\LMDboxa\vtop{% <--- NB % \unvbox\LMDboxa}% unbox in itself \fi % % now put on page the material (contained in \box\LMDboxa) % % prevent changes in float counter when \LMDbox has been previously splitted \ifthenelse{\boolean{@lmd@issplit}}{\addtocounter{MedalFloat}{-1}}{}% % \begin{MedalFloat} \caption{MedalFloat. Chunk: \the@lmd@howmanychunks}% \noindent% % % debug... \makebox[0pt][r]{\texttt{split \the@lmd@howmanychunks}\rule{0.3cm}{0pt}}% % \checkoddpage% needs chngpage, I guess it needs two latex passes % \if@twoside% \ifcpoddpage% needs chngpage % % odd pages % \setboolean{lmd@isodd}{true}% set this global variable for external use % % repack the material in \box\LMDboxb % \setbox\LMDboxb\hbox{% % % put the main rule as a filler \setlength{\lmd@dimena}{\LMDheightmax-\ht\LMDboxa} \ifthenelse{\boolean{lmd@debug}}{\rule[-\lmd@dimena]{2pt}{\lmd@dimena}}{\rule[-\lmd@dimena]{0pt}{\lmd@dimena}} % \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDinnermargin}{2pt}}{\rule{\LMDinnermargin}{0pt}}% \box\LMDboxa% \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDoutermargin}{2pt}}{\rule{\LMDoutermargin}{0pt}}% }% % % finally shipout the hbox into the frame % \centerline{\FrameCommand{\box\LMDboxb}}% do it at the end \else% % % even page % \setboolean{lmd@isodd}{false}% set this global variable for external use % \setbox\LMDboxb\hbox{% % % put the main rule as a filler \setlength{\lmd@dimena}{\LMDheightmax-\ht\LMDboxa} \ifthenelse{\boolean{lmd@debug}}{\rule[-\lmd@dimena]{2pt}{\lmd@dimena}}{\rule[-\lmd@dimena]{0pt}{\lmd@dimena}} % \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDoutermargin}{2pt}}{\rule{\LMDoutermargin}{0pt}}% \box\LMDboxa% \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDinnermargin}{2pt}}{\rule{\LMDinnermargin}{0pt}}% }% % % finally shipout the hbox into the frame % \centerline{\FrameCommand{\box\LMDboxb}}% do it at the end \fi \else% % % one side document % \setbox\LMDboxb\hbox{% % % put the main rule as a filler \setlength{\lmd@dimena}{\LMDheightmax-\ht\LMDboxa} \ifthenelse{\boolean{lmd@debug}}{\rule[-\lmd@dimena]{2pt}{\lmd@dimena}}{\rule[-\lmd@dimena]{0pt}{\lmd@dimena}} % \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDinnermargin}{2pt}}{\rule{\LMDinnermargin}{0pt}}% \box\LMDboxa% \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDoutermargin}{2pt}}{\rule{\LMDoutermargin}{0pt}}% }% % % finally shipout the hbox into the frame % \centerline{\FrameCommand{\box\LMDboxb}}% do it at the end \fi % \end{MedalFloat} % % flag the float as splitted \ifdim\ht\LMDbox>0cm%
\setboolean{@lmd@issplit}{true}\fi
%
% update chunk count
\stepcounter{@lmd@howmanychunks}
%
}% end of while
%
\ifdim\ht\LMDbox>0cm
%
% nothing to split or last iteration
%
\ifthenelse{\boolean{@lmd@issplit}}%
{%
%
% prevent changes in float counter when \LMDbox has been previously splitted
%
\addtocounter{MedalFloat}{-1}%
}{}%
%
% show last chunk of material
%
\ifnum\value{LMD@columns}>1%
% ? \setbox\LMDboxa=\vsplit\LMDbox to \value{LMD@columns}\LMDheight
%
\setbox\LMDboxa=\vtop{% <--- NB % \setlength{\linewidth}{\LMDwidth}% multicols balances column widths according to \linewidth % \begin{multicols}{\value{LMD@columns}} \unvbox\LMDbox% ..a \end{multicols} }% % \else \setbox\LMDboxa\vtop{% <-- NB \unvbox\LMDbox\par% }% \fi \begin{MedalFloat} \caption{MedalFloat. Chunk: \the@lmd@howmanychunks\ end}% \noindent% \checkoddpage% needs chngpage \if@twoside% \ifcpoddpage% needs chngpage \setboolean{lmd@isodd}{true}% set this global variable for external use \setbox\LMDboxb\hbox{% % % put the main rule as a filler \setlength{\lmd@dimena}{\LMDheightmax-\ht\LMDboxa} \ifthenelse{\boolean{lmd@debug}}{\rule[-\lmd@dimena]{2pt}{\lmd@dimena}}{\rule[-\lmd@dimena]{0pt}{\lmd@dimena}} % \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDinnermargin}{2pt}}{\rule{\LMDinnermargin}{0pt}}% \box\LMDboxa% \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDoutermargin}{2pt}}{\rule{\LMDoutermargin}{0pt}}% }% \centerline{\FrameCommand{\box\LMDboxb}}% \else% % % even page % \setboolean{lmd@isodd}{false}% set this global variable for external use \setbox\LMDboxb\hbox{% % % put the main rule as a filler \setlength{\lmd@dimena}{\LMDheightmax-\ht\LMDboxa} \ifthenelse{\boolean{lmd@debug}}{\rule[-\lmd@dimena]{2pt}{\lmd@dimena}}{\rule[-\lmd@dimena]{0pt}{\lmd@dimena}} % \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDoutermargin}{2pt}}{\rule{\LMDoutermargin}{0pt}}% \box\LMDboxa \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDinnermargin}{2pt}}{\rule{\LMDinnermargin}{0pt}}% }% % % finally shipout the hbox into the frame (LAST CHUNK) % \centerline{\FrameCommand{\box\LMDboxb}}% \fi \else% % % one side document % \setbox\LMDboxb\hbox{% \setlength{\lmd@dimena}{\LMDheightmax-\ht\LMDboxa} \ifthenelse{\boolean{lmd@debug}}{\rule[-\lmd@dimena]{2pt}{\lmd@dimena}}{\rule[-\lmd@dimena]{0pt}{\lmd@dimena}} \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDinnermargin}{2pt}}{\rule{\LMDinnermargin}{0pt}}% \box\LMDboxa% \ifthenelse{\boolean{lmd@debug}}{\rule{\LMDoutermargin}{2pt}}{\rule{\LMDoutermargin}{0pt}}% }% % finally shipout the hbox into the frame (LAST CHUNK, ONESIDE) \FrameCommand{\box\LMDboxb} \fi \end{MedalFloat} \fi % % reset the split flag % \setboolean{@lmd@issplit}{false} % % reset the number of chunks \setcounter{@lmd@howmanychunks}{0} % % set height pf box 0 to 0 after the last piece has been shipped out; the while do cycle ends % \ht\LMDbox=\z@% } %------------------------------------------------------------ % framing commands % % ref.: http://www.guit.sssup.it/phpbb/viewtopic.php?t=3186&start=15\definecolor{lmd@blue}{rgb}{.4,.4,1}
\definecolor{lmd@lightblue}{rgb}{.8, .8, 1}
\definecolor{lmd@darkblue}{rgb}{0.07,0.08,0.4}
\definecolor{lmd@darkgreen}{rgb}{0.03,0.47,0.03}
\definecolor{lmd@lightgray}{rgb}{0.95,0.95,0.95}
\definecolor{lmd@darkgray}{gray}{.25}
\definecolor{lmd@violet}{rgb}{0.84,0,0.69}
\definecolor{lmd@orange}{cmyk}{0,0.61,0.87,0}
\definecolor{lmd@indigo}{cmyk}{0.8,0.9,0,0}
\definecolor{lmd@lightorange}{rgb}{.98,.75,.14}\newlength\sidebarMyBox
\newlength\envruleMyBox
\newlength\envborderMyBox
\setlength\sidebarMyBox{1.5pt}% 1.5mm
\setlength\envruleMyBox{0.4pt}
\setlength\envborderMyBox{2.0mm}% A:2.5\long\def\lmd@boxfboxs#1{%
\leavevmode
\setbox\@tempboxa\hbox{%
\color@begingroup
\kern\fboxsep{#1}\kern\fboxsep
\color@endgroup}%
\@frames@x\relax}
%
\def\@frames@x#1{%
\@tempdima\fboxrule
\advance\@tempdima\fboxsep
\advance\@tempdima\dp\@tempboxa
%
% hoffset
\ifthenelse{\boolean{lmd@isodd}}{\hspace{\LMDoddhoffset}}{\hspace{\LMDevenhoffset}}
%
\hbox{%
\lower\@tempdima\hbox{%
\vbox{%
%\hrule\@height\fboxrule
% agodemar …
\hrule height \LMDframeheadrule% 2.0em
%
\par
\makebox[0pt][l]{%
\raisebox{0.5\LMDframeheadrule-0.25\baselineskip}[0cm][0cm]{%
\ifthenelse{\boolean{@lmd@issplit}}{%
% @lmd@howmanychunks
\ifthenelse{\boolean{lmd@isodd}}{%
\textcolor{\LMDframecolor}{\ \LMDname}%
}{%
\textcolor{white}{\ \footnotesize (continua da pag. precedente)}%
}%
}{%
\textcolor{white}{\ \LMDname}%
}%
}%
}%
\par
\hrule height 0pt
% … agodemar
%
\hbox{%
\ifthenelse{\boolean{lmd@drawsideframe}}{\vrule\@width\LMDframerule}{}%
#1%
\vbox{%
%\vskip\fboxsep
\textcolor{\LMDframebgcolor}{\hrule height 2\LMDframesep}% a little tweak
\box\@tempboxa
\vskip\fboxsep}%
#1%
\ifthenelse{\boolean{lmd@drawsideframe}}{\vrule\@width\LMDframerule}{}%
}%
\ifthenelse{\boolean{lmd@drawframe}}{\hrule\@height\LMDframerule}{}%
}%
}%
}%
}\def\lmd@boxfcolorbox#1#{\lmd@MyBoxcolor@fbox{#1}}
\def\lmd@MyBoxcolor@fbox#1#2#3{%
\color@b@x{\fboxsep\z@\color#1{#2}\lmd@boxfboxs}{\color#1{#3}}}\def\FrameCommand{%
% Uncomment here to change globally these dimensions
\fboxrule=\the\sidebarMyBox%
%\fboxsep=\the\envborderMyBox%
\lmd@boxfcolorbox%
{\LMDframecolor}% border
{\LMDframebgcolor}% background
}%
% Provide configuration commands:
\providecommand\FrameCommand{\fboxrule=\FrameRule \fboxsep=\FrameSep \fbox}
\@ifundefined{FrameRule}{\newdimen\FrameRule \FrameRule=\fboxrule}{}
\@ifundefined{FrameSep} {\newdimen\FrameSep \FrameSep =3\fboxsep}{}
`Ecco infine un esempio di documento:
`
\documentclass[12pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian]{babel}
\usepackage[latin1]{inputenc}
%————————————————
\usepackage{titlesec}
% pagestyle
\usepackage{calc}% needed here
\widenhead*{0pt}{\marginparsep + \marginparwidth} % symmetrically
\renewpagestyle{plain}{}
\newpagestyle{latexbook}[\bfseries]{
\headrule
\sethead%
[\thepage][][\chaptertitle]%
{\thesection\ \sectiontitle}{}{\thepage}
\setfoot[][][]{}{}{}
}
\pagestyle{latexbook}
%————————————————
\usepackage{amsmath,amsfonts}
\usepackage{framed,color,lipsum}
\usepackage{manfnt}
%\usepackage{graphicx,pstricks}
\usepackage{multicol}
\usepackage{lipsum}
%————————————————
% LONG MEDAL\usepackage{longmedal}
%————————————————
\usepackage{afterpage}\begin{document}
\mainmatter
\chapter{Gnats nel mondo}{\hangindent=3pc\hangafter=-2\parindent=0pc
\makebox[0pt][r]{\makebox[3pc][l]{\dbend}}%
\lipsum[1]
}\medskip{\hangindent=3pc\hangafter=-2\parindent=0pc
\makebox[0pt][r]{\makebox[3pc][l]{\dbend}}%
\lipsum[2]
}\medskip{\hangindent=3pc\hangafter=-2\parindent=0pc
\makebox[0pt][r]{\makebox[3pc][l]{\dbend}}%
\lipsum[3]
}\medskip\section{Gnu, questo sconosciuto}
\lipsum[1]\medskip
\afterpage{\clearpage\input{es_lm_1.tex}}
\lipsum[2]\medskip
\lipsum[3]\medskip
\lipsum[4]\medskip
\lipsum[5]\medskip
\lipsum[1]\medskip
\lipsum[2]\medskip
%—————————————————————————–
% see http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats
%
% si vogliono ristabilire i parametri “normali” degli oggetti floattanti
%
\renewcommand{\topfraction}{.85}
\renewcommand{\bottomfraction}{.7}
\renewcommand{\textfraction}{.15}
\renewcommand{\floatpagefraction}{.66}
\renewcommand{\dbltopfraction}{.66}
\renewcommand{\dblfloatpagefraction}{.66}
\setcounter{topnumber}{9}
\setcounter{bottomnumber}{9}
\setcounter{totalnumber}{20}
\setcounter{dbltopnumber}{9}
%—————————————————————————–\lipsum\medskip
\lipsum\medskip
\lipsum[3]\medskip
\section{Gnome e i suoi fratelli}
\lipsum
\lipsum
\begin{figure}[tb]
\centering
\fbox{\rule{0pt}{0.35\textheight}\rule{0.5\textwidth}{0pt}}
\caption{Questa è una figura standard.}\label{fig:One}
\end{figure}\lipsum
\begin{figure}[htb]
\centering
\fbox{\rule{0pt}{0.75\textheight}\rule{0.5\textwidth}{0pt}}
\caption{Questa è una figura standard.}\label{fig:Two}
\end{figure}Oh, guarda che bella la \figurename~\ref{fig:One}!
Oh, guarda che bella la \figurename~\ref{fig:Two}!
%%%Oh, guarda che bella la \figurename~MF.\ref{fig:MF:One}!
%%%Oh, guarda che bella la \figurename~MF.\ref{fig:MF:Two}!\chapter{Scopriamo il mondo di Gnome}
\section{L'ambiente di lavoro}
\lipsum\medskip
\lipsum[1]\medskip
\lipsum[2]\medskip
\lipsum[3]\medskip
\lipsum[4]\medskip
{\color{blue}AAA}\par
\afterpage{\clearpage\input{es_lm_2.tex}}
\lipsum\medskip
\lipsum\medskip
\lipsum\medskip
\lipsum\medskip
\lipsum\medskip
\lipsum
\end{document}
`File es_lm_1.tex :
`
\definecolor{mylightgray}{rgb}{0.95,0.95,0.95}\longmedal[%
debug=false,
width=1.1\textwidth,
innermargin=1.5cm,
outermargin=0.2cm,
height=0.60\textheight,
topfraction=0.65,
columns=1,
drawframe=true,
framerule=2pt,
%frameheadrule=2.5em,
%framesep=2mm,
framecolor=darkgray,
framebgcolor=mylightgray,
label={lmd:OneA}
]{%
{\bf\Large a}
\lipsum[1]\medskip{\bf\Large b}
\lipsum[2]\medskip{\bf\Large c}
\lipsum[3]\medskip{\bf\Large d}
\lipsum[3]\medskip
{\bf\Large e}
\lipsum[4]\medskip{\bf\Large f}
\lipsum[5]
}
`File es_lm_2.tex :
`
\longmedal[
debug=false,
drawframe=true,
drawsideframe=true,
framerule=4pt,
framecolor=darkgray,
framebgcolor=yellow,
width=1.3\textwidth,
innermargin=2.5cm,
outermargin=0.2cm,
evenhoffset=1cm,oddhoffset=-1cm,
height={0.50\textheight},
topfraction=0.7,
columns=2,
label={lmd:One}
]{%
{\bf\Large a}
\lipsum[1]\medskip
{\bf\Large b}
\lipsum[2]\medskip{\bf\Large c}
\lipsum[3]\medskip{\bf\Large d}
\lipsum[4]\medskip{\bf\Large e}
\lipsum[5]\medskip{\bf\Large f}
\lipsum[6]
}
`Per chi vuole provare, basta copiare e incollare…
Ciao,
Agostino
-
24 Novembre 2007 alle 10:42 #18023
-
24 Novembre 2007 alle 17:05 #18024::
Decisamente molto utile e bello!
Ti notifico soltanto qualche piccolo bug.
Ho dovuto ridefinire darkgray perché non lo riconosceva come colore. Ma forse questo dipende dal mio pacchetto color che fa le bizze.
Il secondo esempio (il box Giallo) è molto bello e funziona perfettamente con pdflatex, mentre con latex->DVI ->pdf il numero di pagina della seconda pagina su cui compare il medaglione porta ad avere la il numero di pagina al di fuori del medaglione stesso.
Complimenti comunque. Veramente Bravo, sono d’accordo con Andrea, bisognerebbe lavorarci ancora un pochino e trasformarlo in un bel pacchetto, supportando magari il babel.Ciao
Michele
-
24 Novembre 2007 alle 23:19 #18025::
Ringrazio per i complimenti e per i suggerimenti.Quelli che ho riportato sono degli esempi composti un po’ frettolosamente ma
sufficienti per me ad effettuare un minimo di debug e per far vedere la versatilità
dell’ambiente che ho creato.
Per far quadrare bene tutto, i margini le ampiezze del medaglione, eccetera, c’è
da sperimentare un po’. Ecco il motivo per cui ho previsto l’opzione debug=true.Riguardo alla proposta formale di un nuovo pacchetto, devo dire che non saprei da
dove cominciare e a chi mandare cosa. Comunque l’idea mi piace.
Come da ultimo scambio di idee con Claudio Beccari, si potrebbe scrivere un articolo
per ArsTeXnica. In tal caso vorrei arrivare a confezionare un pacchetto scritto per
bene e presentarlo per bene.Ciao,
Agostino
-
25 Novembre 2007 alle 10:49 #18026
-
25 Novembre 2007 alle 12:56 #18027::
Benissimo!
Io direi di formare un piccolo team. Di due o tre volontari, incluso il sottoscritto,
che possano contribuire al confezionamento del pacchetto con i loro
suggerimenti e con la loro esperienza.Ad esempio: chi può suggerire gli step necessari a dare una qualità standard
al pacchetto longmedal.sty ?
Che so: come impostare un .dtx, che stile dare al commento del codice. eccetera.Commenti?
Agostino
-
18 Dicembre 2007 alle 8:55 #18028::
Riguardando il codice mi sono accorto di un errore credo dovuto al copipa incolla, sistemando quello qualcosa migliora.
Hai scritto nel tuo codice\newlength{\LMDwidth} \setlength{\LMDwidth}{\textwidth}
\newlength{\LMDwidtha} \setlength{\LMDwidth}{\textwidth}
\newlength{\LMDwidthb} \setlength{\LMDwidth}{\textwidth}ma dovrebbe essere
\newlength{\LMDwidth} \setlength{\LMDwidth}{\textwidth}
\newlength{\LMDwidtha} \setlength{\LMDwidtha}{\textwidth}
\newlength{\LMDwidthb} \setlength{\LMDwidthb}{\textwidth}Ciao
-
25 Novembre 2008 alle 12:41 #18029
-
29 Aprile 2009 alle 15:06 #18030
-
30 Aprile 2009 alle 8:47 #18031::
Mi piacerebbe utilizzare questo pacchetto per l’inserzione di esempi in un documento. Il pacchetto è già disponibile o c’è ancora da aspettare?
Ciao Nicola,
il pacchetto è a buon punto, anche se non sistemato in maniera definitiva. Se vuoi provare a usarlo, contattami in privato che ti mando l’occorrente.
Sia io che Agostino De Marco saremo contenti di ricevere le impressioni e i suggerimenti di qualcuno che ne fa un uso concreto.
Max.
-
15 Dicembre 2010 alle 4:38 #18032::
Ho cercato il usare longmedal, ma senza successo. Evidentemente ho sbagliato qualcosa (forse nell’installazione?). Riporto di seguito un esempio ridotto al minimo.
`\documentclass[12pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{lipsum}
\usepackage{longmedal}\begin{document}
\longmedal{\lipsum}
\lipsum
\end{document}`
Ne ottengo questo errore bloccante: «! You can’t use `\end’ in internal vertical mode.\enddocument … \endgroup \deadcycles \z@ \@@end ».
Uso MiKTeX 2.9.
-
15 Dicembre 2010 alle 9:26 #18033::
Nelle versioni più recenti di longmedal, il comando principale è stato sostituito da un ambiente. Purtroppo l’unica documentazione al momento esistente (l’articolo di Ars) è relativa a una versione preliminare del pacchetto. Modifica così il tuo esempio:`
\documentclass[12pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{lipsum}
\usepackage{longmedal}\begin{document}
\begin{longmedal}
\lipsum
\end{longmedal}\lipsum
\end{document}
`Ciao,
Max.
-
27 Gennaio 2012 alle 2:46 #18034::
Mi rifaccio vivo, a distanza di oltre un anno, sullo stesso argomento perché non arrivo a risolvere il problema dell’intestazione su due pagine affiancate (che dovrebbe comparire solo sulla pagina di sinistra anziché su entrambe). Riporto un esempio minimo:`
\documentclass[10pt,a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[italian]{babel}
\usepackage{lipsum}
\usepackage{longmedal}
\usepackage{xcolor}
\definecolor{mylightgray}{rgb}{0.95,0.95,095}
\definecolor{mydarkblue}{rgb}{0.49,0.49,1}\begin{document}
\lipsum
\begin{longmedal}[%
width=\textwidth+2\oddsidemargin+2in,%
innermargin=1.0cm,%
outermargin=1.0cm,%
height=.51\textheight,%
columns=2,%
drawframe=bottom,%
framerule=2pt,%
framesep=2mm,%
framecolor=mydarkblue,%
framebgcolor=mylightgray,%
headernamefont=\bfseries\scshape,%
headertitlefont=\bfseries\itshape,%
headerconttext=,%
headertitlesep={\ —\ },%
headertitle={Intestazione di un medaglione largo quanto due pagine affiancate}]%
\lipsum
\end{longmedal}\lipsum
\end{document}
`Grazie,
Puskia
-
25 Febbraio 2012 alle 14:38 #18035
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.