LaTeX: Как создать вертикальное правило на каждой странице? - PullRequest
6 голосов
/ 07 июня 2010

Я использую LaTeX, и я хотел бы иметь вертикальное правило вдоль левой стороны страницы, topmargin до bottommargin, 0,5 дюйма от левого края страницы. Я хочу, чтобы это было на каждой странице, поэтому я предполагаю, что это означает, что оно должно быть каким-то образом связано с верхним или нижним колонтитулом?

Я вообще не добился прогресса, поэтому мне нужна помощь с (1) созданием самого правила полной длины и (2) автоматическим выполнением его на каждой странице документа.

Может кто-нибудь сказать мне, как это сделать?

Ответы [ 3 ]

8 голосов
/ 07 июня 2010

Я получил рабочий ответ на свой вопрос на форуме Latex Community: http://www.latex -community.org / forum / viewtopic.php? F = 5 & t = 9072 & p = 34877 # p34877

Ответ, который я получил, использует пакет 'Background' и этот код:

\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}

Прекрасно работает и его легко было настроить, чтобы один вруль находился в области левого поля, а другой - в области правого поля.

2 голосов
/ 07 июня 2010

Может быть пакет LaTeX, чтобы сделать это для вас, но я скорее специалист по TeX, поэтому я попытался придумать решение TeX (не всегда лучшая идея смешивать простой TeX с LaTeX, но я думаю, У меня это работает).

Попробуй это. Блок 255 - это регистр блока, в который TeX помещает содержимое страницы перед выводом страницы. То, что я сделал, взяло существующую подпрограмму вывода и изменило ее, вставив в блок 255: набор блоков с нулевой высотой, 0 шириной, бесконечно сокращаемый, но переполняющийся, содержащий правило, которое является высотой страницы, 0,4 толстый и, если повезет, на полдюйма влево. Существующее содержимое блока 255 затем добавляется после этого правила. Затем я вызываю предыдущую процедуру вывода, которая выводит страницу (которая теперь включает правило), а также верхние и нижние колонтитулы.

\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
}%

Поставьте его перед командой \begin{document}. Это может не решить вашу проблему полностью, но, надеюсь, это поможет вам начать. Вот отличная страница для изучения примитивов TeX и встроенных вещей.

1 голос
/ 08 июня 2010

Посмотрите на пакет eso-pic. По памяти то, что вы хотите, выглядело бы так:

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

В вашем вопросе неясно, хотите ли вы, чтобы линия охватывала текстовую область или всю высоту бумаги. В зависимости от случая вы должны заменить \topmargin и \textheight на правильные значения: либо 0pt, либо каков ваш верхний предел, либо \paperheight См. Пакет geometry, если вы еще не используете его, чтобы узнать, как управлять этими размерами.

...