因此,我在这方面得到了很多帮助。我自己没有创建代码,但我有额外的需求。
从我的 MWE 中可以看到,我有一份很长的双面memoir
文档,其中有一个background
rule
指示当前章节的。我的问题是\hspace
在这个特定的代码片段中:
\newcommand*\VerBar[2]{%
{\color{#1}\rule{#2}{65pt}}%
\llap{\rotatebox[origin=c]{-90}{%
\hspace*{-2.5cm}\raisebox{-1.5cm}[0pt][0pt]{%
\HUGE\color{white}\bfseries\sffamily\thechapter}%
}%
}%
}
虽然章节号作为一位数是完美的,但两位数的章节需要更多的水平空间才能在打印时适合我的书的出血。因此,有没有办法建立一个\hspace
相对于边距的值,而不是像上面的代码片段中那样?换句话说,如果我更改它,\hspace
它会以相同的方向调整章节号,无论是在奇数页还是偶数页。我希望将数字移向双面文档的装订线 - 或者在奇数页上移到右侧,在偶数页上移到左侧。
梅威瑟:
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{etoolbox}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\definecolor{ATblue}{rgb}{0,0.65,1}
\usepackage[contents={},opacity=0.5,scale=1,angle=90,hshift=-2.5cm]{background}
\newcounter{mychap}
\pretocmd{\chapter}{\stepcounter{mychap}}{}{}
\newcommand*\VerBar[2]{%
{\color{#1}\rule{#2}{65pt}}%
\llap{\rotatebox[origin=c]{-90}{%
\hspace*{-2.5cm}\raisebox{-1.5cm}[0pt][0pt]{%
\HUGE\color{white}\bfseries\sffamily\thechapter}%
}%
}%
}
\newif\ifBgUse
\newlength\LabelSize
\setlength\LabelSize{1.25cm}
\AddEverypageHook{%
\ifBgUse%
\ifodd\value{page}
\backgroundsetup{
position={current page.north east},
vshift=32.5pt,
hshift=-\value{mychap}*\LabelSize,
contents={\VerBar{ATblue}{2.5cm}}%
}%
\else
\backgroundsetup{
position={current page.north west},
vshift=-32.5pt,
hshift=-\value{mychap}*\LabelSize,
contents={\VerBar{ATblue}{2.5cm}}%
}%
\fi%
\BgMaterial%
\fi}
\begin{document}
\BgUsetrue
\Blinddocument
\Blinddocument
\Blinddocument
\end{document}
答案1
第一种方法
此页检查页码是奇数还是偶数,以决定是左搭接还是右搭接章节号。此方法保留了章节号外边缘到页面边缘的距离。
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{etoolbox}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\definecolor{ATblue}{rgb}{0,0.65,1}
\usepackage[contents={},opacity=0.5,scale=1,angle=90,hshift=-2.5cm]{background}
\def\mylap#1{\ifodd\thepage\llap{#1}\else\rlap{#1}\fi}
\newcounter{mychap}
\pretocmd{\chapter}{\stepcounter{mychap}}{}{}
\newcommand*\VerBar[2]{%
{\color{#1}\rule{#2}{65pt}}%
\llap{\rotatebox[origin=c]{-90}{%
\hspace*{-2.3cm}\raisebox{-1.5cm}[0pt][0pt]{%
\HUGE\color{white}\bfseries\sffamily\mylap{\thechapter}}%
}%
}%
}
\newif\ifBgUse
\newlength\LabelSize
\setlength\LabelSize{1.25cm}
\AddEverypageHook{%
\ifBgUse%
\ifodd\value{page}
\backgroundsetup{
position={current page.north east},
vshift=32.5pt,
hshift=-\value{mychap}*\LabelSize,
contents={\VerBar{ATblue}{2.5cm}}%
}%
\else
\backgroundsetup{
position={current page.north west},
vshift=-32.5pt,
hshift=-\value{mychap}*\LabelSize,
contents={\VerBar{ATblue}{2.5cm}}%
}%
\fi%
\BgMaterial%
\fi}
\begin{document}
\BgUsetrue
\Blinddocument
\setcounter{chapter}{10}
\Blinddocument
\end{document}
第二种方法
虽然这不是您完全想要的,但您可能更喜欢这种方法,即无论有多少位数字,章节编号都位于蓝色框的中心。
我使用\makebox[0pt]{\thechapter}
来放置章节号,它将章节号相对于 指定的位置居中\hspace
,我将其修改为 2.3 厘米。
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{etoolbox}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\definecolor{ATblue}{rgb}{0,0.65,1}
\usepackage[contents={},opacity=0.5,scale=1,angle=90,hshift=-2.5cm]{background}
\newcounter{mychap}
\pretocmd{\chapter}{\stepcounter{mychap}}{}{}
\newcommand*\VerBar[2]{%
{\color{#1}\rule{#2}{65pt}}%
\llap{\rotatebox[origin=c]{-90}{%
\hspace*{-2.3cm}\raisebox{-1.5cm}[0pt][0pt]{%
\HUGE\color{white}\bfseries\sffamily\makebox[0pt]{\thechapter}}%
}%
}%
}
\newif\ifBgUse
\newlength\LabelSize
\setlength\LabelSize{1.25cm}
\AddEverypageHook{%
\ifBgUse%
\ifodd\value{page}
\backgroundsetup{
position={current page.north east},
vshift=32.5pt,
hshift=-\value{mychap}*\LabelSize,
contents={\VerBar{ATblue}{2.5cm}}%
}%
\else
\backgroundsetup{
position={current page.north west},
vshift=-32.5pt,
hshift=-\value{mychap}*\LabelSize,
contents={\VerBar{ATblue}{2.5cm}}%
}%
\fi%
\BgMaterial%
\fi}
\begin{document}
\BgUsetrue
\Blinddocument
\setcounter{chapter}{10}
\Blinddocument
\end{document}