页面大小的条件代码

页面大小的条件代码

我从来没有在 Latex 中做过任何涉及太复杂的编码(不仅仅是在这里和那里编写和定制一些东西),所以我很难找到我需要的东西。

我需要我的项目以两种大小进行编译,a4papera5paper,作为选项传递给\documentclass[]{article}命令。

我只需选择一个选项,生成一个 PDF,然后将其更改为 A5 并再次编译。现在,如果是 A5 或 A4 模式,文档的某些部分应该会有所不同,我不知道该怎么做。

我该怎么做呢?比如

\if @pagesize=a4paper
    do stuff
\fi

这样可行?

先感谢您。

编辑:我读到过,旧的 PlainTeX 条件在某些情况下会导致意外行为,但我在里面做的事情其实很简单,比如放\hspaces 之类的东西,所以如果这些条件很简单,我愿意使用它们。显然,如果可以用其他更好的方式做到这一点,我也想知道。

答案1

据我所知,纸张尺寸选项并非直接存储在宏中,但这可能有效。

我已经引入了一个默认\newif\ifafourpaper值,如果使用false该选项,则设置为 true 。a4paper

从中article.cls,我分别窃取了\DeclareOptiona4papera5paper其中布尔宏\ifafourpaper是相应地设置的。

重要的

\ProcessOptions由于选项声明已改变,因此必须明确使用!


\documentclass[a5paper]{article}

\usepackage{blindtext}

\newif\ifafourpaper

\afourpaperfalse


\DeclareOption{a4paper}
   {\setlength\paperheight {297mm}%
    \setlength\paperwidth  {210mm}%
    \afourpapertrue%
  }
\DeclareOption{a5paper}
   {\setlength\paperheight {210mm}%
    \setlength\paperwidth  {148mm}%
    \afourpaperfalse%
  }


\ProcessOptions

\begin{document}
\ifafourpaper
\blindtext[2]
\else
\blindtext
\fi

\end{document}

答案2

假设您不使用landscape模式,您可以根据类别存储的纸张高度来做出决定。

\documentclass[a4paper]{article}

\newcommand\papersize[1]{%
  TT\fi
  \uppercase{\ifdim\csname #1@PAPER\endcsname}=\paperheight
}
\makeatletter
\@namedef{A4@PAPER}{297mm}
\@namedef{A5@PAPER}{210mm}
\@namedef{B5@PAPER}{250mm}
\@namedef{LETTER@PAPER}{11in}
\@namedef{LEGAL@PAPER}{14in}
\@namedef{EXECUTIVE@PAPER}{10.5in}
\makeatother


\begin{document}

\if\papersize{a4}
  We're using A4 paper
\else
  We're not using A4 paper
\fi

\if\papersize{A5}
  We're using A5 paper
\else
  We're not using A5 paper
\fi

\end{document}

在此处输入图片描述

输出变为

在此处输入图片描述

如果\documentclass[a5paper]{article}使用的话。

请注意,您可以自由使用 或A5;我为对应于、、、和的a5参数定义了值,这些值是 和其他标准类已知的所有大小。其他值可以随意添加。a4a5b5letterlegalexecutivearticle

相关内容