该geometry
包提供了一种设置布局参数的简单方法。例如,
\usepackage[margin=1in]{geometry}
将给我一份每边边距为 1 英寸的文档。具体来说,它会计算 LaTeX 参数,例如、、\textwidth
和等等。是否可以检索“更友好”的值,例如、、和?\oddsidemargin
\textheight
\topmargin
left
right
top
bottom
当然,可以使用类似 之类的东西来计算值\dimexpr \topmargin + \headheight + \headsep + 1in \relax
。还有更复杂的是,includehead
和includefoot
选项会影响参数的设置。
答案1
这些值存储在 pt 等命令中\Gm@lmargin
。\Gm@tmargin
如果您对选项中实际使用的单位感兴趣,您还可以修补\Gm@defbylen
(据我所知)大多数选项使用的单位,然后使用以下命令设置值\geometry
:
\documentclass[12pt]{article}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\makeatletter
\def\Gm@defbylen#1#2{%
\expandafter\edef\csname myGm#1\endcsname{#2}%new
\begingroup\setlength\@tempdima{#2}%
\expandafter\xdef\csname Gm@#1\endcsname{\the\@tempdima}\endgroup}%
\geometry{margin=1in}
\begin{document}
\makeatletter\Gm@lmargin \myGmlmargin
\end{document}
答案2
该命令接受一个强制参数,该参数应为包的可选参数\geometryget
之一的名称,例如,,,等(下面的版本仅支持参数,,,和及其各种别名,但可以很容易地扩展为包括所有可选参数)。geometry
left
top
textheight
lmargin
rmargin
tmargin
bmargin
geometry
它扩展为相应参数的值,以pt
s为单位。
\documentclass{article}
\usepackage{pgfkeys}
\pgfkeyssetvalue{/geometry/lmargin}{lmargin}
\pgfkeyssetvalue{/geometry/left}{lmargin}
\pgfkeyssetvalue{/geometry/inner}{lmargin}
\pgfkeyssetvalue{/geometry/innermargin}{lmargin}
\pgfkeyssetvalue{/geometry/rmargin}{rmargin}
\pgfkeyssetvalue{/geometry/right}{rmargin}
\pgfkeyssetvalue{/geometry/outer}{rmargin}
\pgfkeyssetvalue{/geometry/outermargin}{rmargin}
\pgfkeyssetvalue{/geometry/tmargin}{tmargin}
\pgfkeyssetvalue{/geometry/top}{tmargin}
\pgfkeyssetvalue{/geometry/bmargin}{bmargin}
\pgfkeyssetvalue{/geometry/bottom}{bmargin}
\newcommand{\geometryget}[1]
{\csname Gm@\pgfkeysvalueof{/geometry/#1}\endcsname}
\usepackage{geometry}
\begin{document}
\begin{tabular}{|ll|ll|ll|ll|}
lmargin&\geometryget{lmargin}&
rmargin&\geometryget{rmargin}&
tmargin&\geometryget{tmargin}&
bmargin&\geometryget{bmargin}\\
left&\geometryget{left}&
outer&\geometryget{outer}&
top&\geometryget{top}&
bottom&\geometryget{bottom}
\end{tabular}
\end{document}
一个更加实质性的用法示例。
下面的示例将\geometryget
边距注释的宽度设置为右边距宽度的 0.8,并使其在右边距居中。
在上面的代码中,在包加载后将以下内容插入到前言中geometry
。
\geometry{hscale=.66,hmarginratio=1:4}
\usepackage{pgfmath}
\pgfmathsetlength{\marginparsep}{.1*\geometryget{right}}
\pgfmathsetlength{\marginparwidth}{.8*\geometryget{right}}
\usepackage{lipsum}
将文档主体替换为以下内容:
\lipsum[1-1]
\marginpar{\lipsum[2-2][1-1]}
\lipsum[3-7]