我从文章模板下载了一个包。我想编辑它,但不知道该怎么做。
答案1
这取决于你想改变什么……
例子
让我们假设一个简单而小的包,package.sty
其中包含以下内容。我使用这个假想的包,因为它可以包含我想要共享的所有内容,并且没有那么复杂的代码。如果您想测试它,请将包代码保存package.sty
在您的文档文件夹中,即保存文本文件的位置,或您的用户texmf
树*。
\ProvidesPackage{package}
\DeclareOption*{No options.}
\ProcessOptions\relax
\RequirePackage{parskip}
\newcounter{counter}
\newlength{\length}
\setlength{\length}{1em}
\newcommand{\numfont}{\sffamily\bfseries}
\newcommand{\pkg@printnumber}[1]{
{\numfont(#1)}%
}
\newcommand*{\numberbox}[1]{%
\par
\refstepcounter{counter}%
\fbox{%
\pkg@printnumber{\thecounter}\hspace{\length}#1%
}%
\par
}
在这样的文档中使用:
\documentclass{article}
\usepackage{package}
\begin{document}
\section{Sec 1}
\numberbox{Foo}
\numberbox{Bar}
\section{Sec 2}
\numberbox{Baz}
\end{document}
较小的变化
可以在文档的前言部分中进行,即在\begin{document}
加载包之前但之后。
(1)改变一些宏的定义
如果你想改变宏的行为,你可以使用\renewcommand
并设置新的定义或类似\patchcmd
工具etoolbox
。
例如,如果你想更改数字的字体,请使用
\renewcommand{\numfont}{\bfseries} % (1.1)
如果你想在定义中添加一些内容,请\appto
使用etoolbox
\appto\numfont{\sffamily} % (1.2)
如果你想替换命令的一部分,例如用 use 替换\numfont
。\myfont
请注意,如果宏名称包含 ,\patchcmd
则需要** 。\makeatletter
@
\makeatletter
\newcommand{\myfont}{\sffamily\itshape}
\patchcmd{\pkg@printnumber}{\numfont}{\myfont}{}{} % (1.3)
\makeatother
(2)改变长度
用于\setlegth
改变长度。
\setlength{\length}{2em} % (2.1)
或再次\patchcmd
更换
\newlength{\mylength}\setlength{\mylength}{3em}
\patchcmd{\numberbox}{\length}{\mylength}{}{} % (2.2)
(3)改变计数器的外观
要改变计数器的外观,例如从 1、2、3 变为 I、II、III,请再次用 改变 的\the<counter>
定义\renewcommand
。
\renewcommand{\thecounter}{\Roman{counter}} % (3.1)
chngcntr
有更多工具可用于此目的。section
例如,您可以添加计数器。
\counterwithin{counter}{section} % (3.2)
上述变更的完整 MWE
请注意,并非所有更改都会立即可见,例如 (3.2) 会覆盖 (3.1),因此您可以取消注释某些行以查看效果。
\documentclass{article}
\usepackage{package}
\usepackage{etoolbox}% required by (1.2), (1.3), (2.2)
\usepackage{chngcntr}% required by (3.2)
% (1)
\renewcommand{\numfont}{\bfseries} % (1.1)
\appto\numfont{\sffamily} % (1.2)
\makeatletter
\newcommand{\myfont}{\sffamily\slshape}
\patchcmd{\pkg@printnumber}{\numfont}{\myfont}{}{} % (1.3)
\makeatother
% (2)
\setlength{\length}{2em} % (2.1)
\newlength{\mylength}\setlength{\mylength}{3em}
\patchcmd{\numberbox}{\length}{\mylength}{}{} % (2.2)
% (3)
\renewcommand{\thecounter}{\Roman{counter}} % (3.1)
\counterwithin{counter}{section} % (3.2)
\begin{document}
\section{Sec 1}
\numberbox{Foo}
\numberbox{Bar}
\section{Sec 2}
\numberbox{Baz}
\end{document}
更复杂的变化
复制该sty
文件并将其以新名称保存在您的用户texmf
树中*。然后在您喜欢的编辑器中打开它并进行所需的更改。
* 看我应该将自己的 .sty 或 .cls 文件放在哪里,以使它们可供我的所有 .tex 文件使用?**参见
\makeatletter 和 \makeatother 起什么作用?。