【问题标题】:How do you extend article document class in LaTeX?你如何在 LaTeX 中扩展文章文档类?
【发布时间】:2009-02-24 14:23:59
【问题描述】:

我真的不需要对默认文章文档类进行大量更改。我想要的只是:

  • 重新定义页边距(我希望它们在所有页面上都相同,但与默认值不同);
  • 使用标题页;
  • 在标题页上添加更多元素(titleauthordate 对我来说还不够,我想要 company 和公司 logo 也将出现在标题页上);
  • 更改 sectionssubsectionssubsubsections 的样式(我不希望显示数字,否则 - 它们是好)。

也许,有一些软件包在这种情况下可能会有所帮助?

【问题讨论】:

    标签: latex customization


    【解决方案1】:

    有许多软件包可以帮助您实现所需的结果。我在下面选择的包是我喜欢的,但方法不止一种。

    \NeedsTeXFormat{LaTeX2e}
    \ProvidesClass{paulius-article}[2009/02/25 v0.1 Paulius' modified article class]
    
    % Passes and class options to the underlying article class
    \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
    \ProcessOptions
    
    % Load LaTeX's article class with the `titlepage' option so that \maketitle creates a title page, not just a title block
    \LoadClass[titlepage]{article}
    
    % Redefine the page margins
    % TODO: Adjust margins to your liking
    \RequirePackage[left=1in,right=1in,top=1in,bottom=1in]{geometry}
    
    % Remove the numbers from all the headings (\section, \subsection, etc.)
    \setcounter{secnumdepth}{-1}
    
    % To modify the heading styles more thoroughly use the titlesec package
    %\RequirePackage{titlesec}
    
    % Adjust the title page design
    % NOTE: This is the default LaTeX title page -- free free to make it look like whatever you want.
    % TODO: Add company name and logo somewhere in here.
    \newcommand{\maketitlepage}{%
      \null\vfil
      \vskip 60\p@
      \begin{center}%
        {\LARGE \@title \par}%
        \vskip 3em%
        {\large
         \lineskip .75em%
          \begin{tabular}[t]{c}%
            \@author
          \end{tabular}\par}%
          \vskip 1.5em%
        {\large \@date \par}%       % Set date in \large size.
      \end{center}\par
      \@thanks
      \vfil\null%
      \end{titlepage}%
    }
    
    % This some before-and-after code that surrounds the title page.  It shouldn't need to be modified.  
    % I've pulled out the part the actually typesets the title page and placed it in the \maketitlepage command above.
    \renewcommand\maketitle{\begin{titlepage}%
      \let\footnotesize\small%
      \let\footnoterule\relax%
      \let \footnote \thanks%
      \maketitlepage%
      \setcounter{footnote}{0}%
      \global\let\thanks\relax
      \global\let\maketitle\relax
      \global\let\@thanks\@empty
      \global\let\@author\@empty
      \global\let\@date\@empty
      \global\let\@title\@empty
      \global\let\title\relax
      \global\let\author\relax
      \global\let\date\relax
      \global\let\and\relax
    }
    
    % TODO: If there are any other article modifications required, add them here.
    
    % That's all, folks!
    \endinput
    

    您需要阅读geometry package 的文档以调整边距。 titlesec package 可以用来修改标题的外观(除了关闭数字)。

    标题页是 LaTeX 的默认标题页。您需要对其进行修改以添加您的公司名称和徽标。我已经从与标题页相关的所有其他代码中分离出“要打印的东西”。您应该只需要更改\maketitlepage 命令。在您的文档中,使用\maketitle 打印标题页。

    \documentclass{paulius-article}
    
    \title{My New Document Class}
    \author{Paulius}
    
    \usepackage{lipsum}% provides some filler text
    
    \begin{document}
    \maketitle% Actually makes a title page
    
    \section{Section Heading}
    \subsection{Look no numbers!}
    \lipsum[1-10]
    
    \end{document}
    

    如果我错过了您的任何要求,请告诉我。

    【讨论】:

      【解决方案2】:

      你开始

      \NeedsTeXFormat{LaTeX2e}
      \ProvidesClass{classname}[2009/02/24]
      \LoadClass{article}
      

      然后添加任何自定义。

      更新:我建议您阅读 LaTeX2e 以供类和包编写者使用:PDFHTML。第 3 节(类或包的结构)中的示例应该会有所帮助。

      【讨论】:

      • 好吧,我已经走到这一步了,我什至有一堆 \setlength{..},但它似乎对我不起作用。你有什么可以分享的评论很好的扩展吗?也许是某个地方的链接?
      • 良好的链接。我和那个东西睡了一个星期左右,试图让我的论文得到边缘女士的认可......
      • @dmckee: 那些保证金女士... =)
      【解决方案3】:

      有几点可能很有趣:

      • 您可以通过重置控制长度(如\setlength{\textwidth}{6.80in}\setlength{\oddsidemargin}{0.0in} 等)来重新定义页眉中的边距(即\begin{document}} 之前。

      • \section*{...} 已经为您提供了未编号的部分。 \subsection*\subsubsection* 也是如此。如果你确实使用了这个技巧并且还想要工作参考,你可以看看How do I emit the text content of a reference in LaTeX?

      • 您查看过titlepage 环境吗?

      但也许最重要的是,memoir class 可以为您提供所需的所有控制,而无需任何类黑客攻击。查看the documentation

      或使用Can Berk Güder's suggestion

      【讨论】:

      • 嗯,我只是看了一下,但看起来很有希望。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      相关资源
      最近更新 更多