2010-06-06 13 views
6

Sto usando LaTeX e mi piacerebbe avere una regola verticale sul lato sinistro della pagina, topmargin to bottommargin, 0.5in dal bordo sinistro della pagina. Lo voglio su ogni pagina, quindi presumo che significhi che deve essere legato in qualche modo all'intestazione o al piè di pagina?LaTeX: come creare una regola verticale a pagina intera su ogni pagina?

Non ho fatto alcun progresso, quindi ho bisogno di aiuto con (1) fare la regola intera e (2) farlo avvenire automaticamente su ogni pagina del documento.

Qualcuno può dirmi come farlo?

risposta

7

ho ottenuto una risposta a lavorare alla mia domanda sul forum Comunità lattice: http://www.latex-community.org/forum/viewtopic.php?f=5&t=9072&p=34877#p34877

La risposta che ho ricevuto utilizza il pacchetto di 'sfondo' e questo codice:

\documentclass{article} 
\usepackage{background} 
\usepackage{lipsum}% just to generate filler text for the example 

\SetBgScale{1} 
\SetBgAngle{0} 
\SetBgColor{black} 
\SetBgContents{\rule{.4pt}{\paperheight}} 
\SetBgHshift{-9cm} 

\begin{document} 

\lipsum[1-90] 

\end{document} 

Funziona grande ed era facile da regolare per mettere un vrule nell'area del margine sinistro e uno nell'area del margine destro.

2

Ci potrebbe essere un pacchetto LaTeX per farlo, ma io sono più una persona TeX, quindi ho provato a trovare una soluzione TeX (non sempre la migliore idea per mischiare TeX con LaTeX ma io penso di averlo funzionante).

Prova questo. La casella 255 è il registro di casella in cui TeX inserisce i contenuti della pagina prima che la pagina venga stampata. Quello che ho fatto è stato preso la routine di output esistente e l'ho cambiata per inserirlo nella casella 255: un insieme di scatole di 0, altezza 0 larghezza infinitamente restringibile ma traboccante contenente una regola che è l'altezza della pagina, 0.4 pt spessa e con un po 'di fortuna, mezzo pollice di distanza a sinistra. Il contenuto esistente della casella 255 viene quindi aggiunto dopo questa regola. Quindi chiamo la routine di output precedente che emette la pagina (che ora include una regola) e anche le intestazioni e i piè di pagina.

\newtoks\oldoutput 
\oldoutput=\expandafter{\the\output}% 
\output{% 
    \setbox255\vbox to 0pt{% 
     \hbox to 0pt{% 
      \vsize\ht255% 
      \vbox to \ht255{% 
       \vss 
       \hbox to -0.5in{% 
        \hss 
        \vrule height \ht255 width 0.4pt% 
       }% 
      }\hss 
     }\vss 
     \box255% 
    }% 
    \the\oldoutput 
}% 

mettere prima il vostro comando \begin{document}. Questo potrebbe non risolvere il tuo problema completamente, ma si spera che dovrebbe iniziare. Here's un'ottima pagina per conoscere le primitive di TeX e le cose integrate.

+0

Grazie mille. Non riuscivo a farlo funzionare come scritto. Se l'ho compilato in un semplice esempio, ho ricevuto degli errori che non potevo eseguire il debug. Stranamente, se inserisco questo codice nel preambolo del documento in cui stavo già utilizzando la soluzione di "background" che ho postato su me stesso, questo codice pone una linea all'estremità sinistra dell'area di testo (cioè, al margine sinistro del paragrafo che ha il rientro di 0). Ad esempio, corre esattamente lungo il bordo sinistro della textarea, con altezza del textheight. Se commento le linee di sfondo, ho di nuovo errori di compilazione. Salverò questo codice per ingannare in futuro. Grazie! –

+0

@Herbert Sitz: Scusa, ho inserito '\ hss' nella parte sbagliata di' \ vrule'. Non sono sicuro del motivo per cui stai ricevendo errori, per me va bene per il tuo caso di test del labiale. – dreamlax

+0

Non sei sicuro del problema, ma il tuo codice funziona correttamente ora. Considero che la tua soluzione è appositamente concepita per tracciare una linea verticale che ha la parte superiore e inferiore uguali alla parte superiore e inferiore di "textarea".Sarebbe facile modificarlo per farlo andare in cima all'area dell'intestazione e in basso sotto l'area del piè di pagina? Se non banale, non ti preoccupare. Grazie ancora. –

1

Dai un'occhiata al pacchetto eso-pic. Dalla memoria, ciò che si desidera sarebbe simile a questa:

\AddToShipoutPicture{% 
    \setlength\unitlength{1in}% 
    \AtPageUpperLeft{% 
     \put(0.5,\topmargin){\vrule width .5pt height \textheight}% 
    }% 
} 

Non è chiaro nella tua domanda se si desidera che la linea per coprire l'area di testo o l'intera altezza della carta. A seconda del caso, è necessario sostituire \topmargin e \textheight con i valori corretti, sia 0pt o qualsiasi sia il margine superiore o \paperheight. Vedi il pacchetto geometry se non lo usi già per come controllare quelle dimensioni.

Problemi correlati