如何从头定义部分

如何从头定义部分

我正在从头开始编写自己的文档类(作为学习练习),并且我坚持定义自己的部分。

我不喜欢\chapter\section\subsection惯例,更倾向于降价方法(例如,#对于 1 级标题、##对于 2 级等...)。

因此我想将我的 0 级标题定义为\h,将我的 1 级标题定义为,依此\hh类推。

如果我使用我的定义,\h我得到undefined control sequence [\end{document}]

[Compiling C:\Users\mastarija\Desktop\LaTexIng\CurriculumVitae\CurriculumVitae.tex]

Basic Builder: running xelatex...done.

Errors:

C:\Users\mastarija\Desktop\LaTexIng\CurriculumVitae\CurriculumVitae.tex:9: Undefined control sequence. [\end{document}]

No warnings.

C:\Users\mastarija\Desktop\LaTexIng\CurriculumVitae\CurriculumVitae.log:1: Double-click here to open the full log.

[Done!]

这是我的测试文档:

\documentclass{CurriculumVitae}

\begin{document}

\h{Some title}

This is super duper

\end{document}

以下是我目前的课程文件:

% METADATA

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{CurriculumVitae}

% CORE SETUP

\renewcommand{\normalsize}{\fontsize{15}{20}\selectfont}

% PACKAGES

\usepackage[paper=a4paper]{geometry}
\usepackage{fontspec}

% DEFAULT SETTINGS

% Layout

\geometry{top=4cm,left=4cm,right=4cm,bottom=4cm}

% Typography

\setmainfont{Arial}
\setlength{\parindent}{0cm}

% Headings

\newcounter{h}
\newcommand{\h}{\@startsection{h}{0}{0cm}{0cm}{0cm}{\scshape}}

答案1

您只显示了错误消息的乱码形式。您的日志文件将显示

! Undefined control sequence.
<write> ...ct \numberline {1}Some title}{\thepage 
                                                  }\protected@file@percent }
l.9 \end{document}

添加

\newcommand\thepage{\arabic{page}}

到你的类文件使其工作而不会出现错误,或者更好地复制类使用的形式article

\pagenumbering{arabic}

您还需要定义\hmark提供代码来添加到页面头部或丢弃标题,例如

\newcommand\hmark[1]{}

足以防止文本出现两次。

答案2

重复是由于\@dblarg在部分命令定义中的某个地方调用而导致的。您可以强制命令使用带星号的版本以避免重复:

\newcounter{h}
\def\thepage{\relax}
\def\h{\hstar*}
\newcommand{\hstar}{\@startsection{h}{0}{0cm}{0cm}{0cm}{\scshape}}

在此处输入图片描述

但是,当您尝试将标准类中的命令合并到具有不同或缺失定义的新类中时,您可能会遇到更多问题。如果您不喜欢这些名称,最简单的方法很可能是直接使用并将其与命令等article组合在一起。\def\h{\section}

相关内容