根据部分创建带有垂直边框文本的自己的 .cls

根据部分创建带有垂直边框文本的自己的 .cls

我今天有一个特殊请求。

我想定义自己的 latex 模板 (.cls)。应该有

  • 根据章节/节在右/左页面边框上使用相同的垂直文本
  • 每页多列
  • 根本没有页码(并且丢失了页眉行,如示例中所示

以下代码显示了我目前所创建的内容。您可能猜到这应该是某种餐厅。

\ProvidesClass{menuX}[2018/03/09, v1, menuX, foo]


\LoadClass{scrartcl}
\KOMAoptions{twoside}
\ProcessOptions\relax

\RequirePackage[paperheight=28cm, paperwidth=14cm,%
                top=2.5cm, bottom=2cm, left=2.5cm, right=2cm,%
%               showframe
                ]{geometry}
%\pagenumbering{gobble}
\RequirePackage{tikz-page}
\pagestyle{plain}

\RequirePackage{lmodern}
\RequirePackage{xcolor}

\newcommand{\grey}[1]{\textcolor[rgb]{.66 .66 .66}{#1}}
\newcommand{\tikzpagelayout}{
    \node[ rotate=90, below](t) at (page.west) {\fontsize{100}{120}\selectfont \grey {testBorderPage}};
}

使用这个,我可以提供一个示例代码,像这样..

\documentclass{menuX}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\begin{document}
    Hello World!
    \clearpage
    Hello again
\end{document}

我希望这能说明我想做什么。这或多或少是一种解决方法,因为我有一些使用乳胶的经验,但根本没有创建我的模板。提前谢谢。

答案1

尤其是您已经在使用scrartcl,您可以使用 来创建如下页面样式scrlayer:您创建两个层,一个在左边距,一个在右边距,每个层都有垂直文本。然后,您可以创建仅包含这两个层的页面样式。

\ProvidesClass{menuX}[2018/03/09, v1, menuX, foo]

\LoadClass{scrartcl}
\KOMAoptions{twocolumn,twoside}
\ProcessOptions\relax

\RequirePackage[paperheight=28cm, paperwidth=14cm,%
                top=2.5cm, bottom=2cm, left=2.5cm, right=2.5cm,%
                ]{geometry}

\RequirePackage{lmodern}
\RequirePackage{xcolor}
\RequirePackage{scrlayer}
\RequirePackage{graphicx}

\newcommand{\grey}[1]{\textcolor[gray]{.66}{#1}}

\DeclareNewLayer[
  background,
  everypage,
  leftmargin,
  contents={%
    \vfil\hfil\rotatebox{90}{%
      \fontsize{100}{120}\selectfont\grey\leftmark%
    }\hfil\vfil
}]{markmargin-left}
\DeclareNewLayer[
  background,
  everypage,
  rightmargin,
  contents={%
    \vfil\hfil\rotatebox{90}{%
      \fontsize{100}{120}\selectfont\grey\rightmark%
    }\hfil\vfil
}]{markmargin-right}

\DeclareNewPageStyleByLayers{markmargin}{markmargin-right,markmargin-left}
\pagestyle{markmargin}
\automark[section]{section}

本示例文档的输出:

\documentclass{menuX}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\begin{document}
\addsec{First}
  \lipsum
  \clearpage
\addsec{Second}
  \lipsum
\end{document}

输出

编辑:如果您不想要节标题,您可以首先避免添加节:如果

\automark[section]{section}

你写

\manualmark
\renewcommand\section[1]{%
  \clearpage%
  \markboth{#1}{#1}
}

该命令\section{Some name}将开始新的一页并更新页边距,但不会执行任何其他操作,尤其是不会打印任何章节标题。当然,那么您必须在示例中使用\section而不是。\addsec

相关内容