我使用 LaTeX 软件包编写了一份问卷paperandpencil.sty
(http://www.qdds.de/index.php?id=129)。该软件包以某种方式禁用了页码,但我需要问卷调查有这些页码。有没有办法强制/重新启用页码或创建自己的页码,类似于文章类中的标准编号?
以下是我的序言和一个简短的例子。
\documentclass[a4paper, 12pt]{article}
\usepackage{geometry}
\geometry{a4paper, top=10mm, bottom=20mm, left=10mm, right=10mm, headsep=10mm, footskip=12mm}
\usepackage[interviewer, nonumbers]{paperandpencil}
\setlength{\answerwidth}{\linewidth}
\begin{document}
\setcounter{page}{75}
\addtocounter{section}{7}
\section{Example Code}
\startbox
\begin{flushleft}
\textbf{This is an example.}
\end{flushleft}
\stopbox
\end{document}
不幸的是,我对 LaTeX 的了解并不包括对软件包源代码的理解,而且文档中也paperandpencil.sty
没有页码。考虑到这是我的德国大学创建的软件包,我猜你们都不知道。我已经禁用了所有不必要的软件包,但找不到任何交互。如果有人能指出我的错误,或者,如果没有,能想出一个解决方案,如何手动将页码插入文档,我将非常高兴。
提前致谢!
编辑:抱歉,我清理了序言中所有不必要的部分。
答案1
这是一个最低限度的工作恢复页码并编译无错误的示例。
\documentclass[a4paper, 12pt]{book}
\usepackage{paperandpencil}
\pagestyle{plain}
\begin{document}
\pagenumbering{arabic}
\setcounter{page}{75}
\addtocounter{section}{7}
\section{Example Code}
\begin{flushleft}
\textbf{This is an example.}
\end{flushleft}
\end{document}
编辑
仅对此进行一些说明。该.sty
文件包含一些可疑的代码。例如:
\renewcommand*\thechapter{\bf{\arabic{chapter}.}}
这不仅要求你使用定义章节的类(例如book
或report
但不是`文章),它还使用长期弃用的命令来设置字体粗细,或者更准确地说,它是滥用一个早已弃用的命令。
\bf
是 LaTeX2e 之前的命令。它从不接受参数。也就是说,即使它是设置粗体的正确方法,也不应该这样使用。
备择方案:
\renewcommand*\thechapter{\textbf{\arabic{chapter}.}}
或者
\renewcommand*\thechapter{\bfseries\arabic{chapter}.}
但是以这种方式定义事物的问题是,如果\thechapter
在交叉引用中使用,您将得到粗体和一个后续点,这可能不是您想要的。\thechapter
实际上应该只设置计数器的基本格式,即阿拉伯数字或罗马数字或其他格式。这是从book.cls
:
\renewcommand \thechapter {\@arabic\c@chapter}
如果包使用这个(如果需要)并\chapter
适当地处理默认格式,那就更好了。
但是,该包不会重新定义\thesection
。因此,当您将其与默认book.cls
定义结合时:
\renewcommand \thesection {\thechapter.\@arabic\c@section}
最终,章节号和节号之间不只有一个点,而是两个点(如我的 MWE 输出所示)。如果您定义一个章节(例如,为了避免出现零点),那么您将得到:
在我看来这根本就不对劲。
恐怕在不理解代码的情况下使用此软件包可能会令人沮丧。例如,它根本没有仔细选择宏名,这些宏名可能不会与其他软件包使用的宏名冲突。例如,它不使用内部命令的前缀,并且它定义了几个双字母宏(例如\df
,\km
),这不是好的做法。
这可能是有意的,但包也以一种会增加大量垂直间距的方式定义了环境,例如它一起使用center
和tabular
,这将在其内容之前和之后添加垂直间距。