有一些我不明白的冲突或错误。我可以跳过它,没有任何可见的事情发生。输出正常,一切似乎都很好。但我仍然想摆脱错误消息。如果我运行以下最小示例:
\documentclass[]{scrbook}
\usepackage[applemac, grafiken]{tahbiblatex}
\usepackage[ngerman]{babel}
\begin{document}
Testing äüöaüä.
\end{document}
我收到错误信息:
! Missing = inserted for \ifnum.
<to be read again>
,
l.4 \usepackage
[ngerman]{babel}
?
! Missing number, treated as zero.
<to be read again>
,
l.4 \usepackage
[ngerman]{babel}
这是我的.sty 文件:
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesPackage{tahbiblatex}[2012, by tah modified by sm]
\RequirePackage{ifthen}
\DeclareOption{latin1}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{applemac}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{cp850}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{utf8}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{dvi}{%
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\pdfoutput=0
\pdftrue
\fi}
\newcounter{Grafiken}\setcounter{Grafiken}{0}
\DeclareOption{grafiken}{\setcounter{Grafiken}{1}}
\newcounter{Randausgleich}\setcounter{Randausgleich}{0}
\DeclareOption{randausgleich}{\setcounter{Randausgleich}{1}}
\newcounter{Tabellen}\setcounter{Tabellen}{0}
\DeclareOption{tabellen}{\setcounter{Tabellen}{1}}
\newcounter{Sync}\setcounter{Sync}{0}
\DeclareOption{sync}{\setcounter{Sync}{1}}
\ProcessOptions
\RequirePackage{fixltx2e}
\RequirePackage{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[T1]{url}
\RequirePackage{setspace}
%\RequirePackage[german]{varioref}
\RequirePackage{textcomp}
\newcommand{\urlangabe}[2]{%
$\langle$\url{#1}$\rangle$ -- Zugriff am #2}
\def\hierlockern {\begingroup \def\par{\endgraf\endgroup}%
\tolerance 1414%
\hbadness 1414%
\emergencystretch 1.5em%
\hfuzz 0.3pt%
\vfuzz \hfuzz%
\raggedbottom%
}
\newcommand{\alleslockern}{%
\tolerance 1414%
\hbadness 1414%
\emergencystretch 1.5em%
\hfuzz 0.3pt%
\vfuzz \hfuzz%
\raggedbottom%
}
\ifthenelse{\value{Grafiken}=1}
{
\ifx\pdfoutput\undefined \newcount\pdfoutput \fi
\ifcase\pdfoutput
\RequirePackage[dvips]{graphicx}
\DeclareGraphicsExtensions{.eps}
\typeout{Paket tah Meldung: Die Option `grafiken' fuer DVI wurde gewaehlt.}%
\else
\RequirePackage[pdftex]{graphicx}
\DeclareGraphicsExtensions{.jpg,.tif,.png,.pdf}
\typeout{Paket tah Meldung: Die Option `grafiken' fuer PDF wurde gewaehlt.}%
\fi}
{}
\ifthenelse{\value{Sync}=1}
{
\ifx\pdfoutput\undefined \newcount\pdfoutput \fi
\ifcase\pdfoutput
\RequirePackage{srcltx}
\typeout{Paket tah Meldung: Die Option `sync' fuer DVI wurde gewaehlt.}%
\else
\RequirePackage{pdfsync}
\typeout{Paket tah Meldung: Die Option `sync' fuer PDF wurde gewaehlt.}%
\fi
}
{}
\ifthenelse{\value{Randausgleich}=1}
{\typeout{Paket tah Meldung: Die Option `randausgleich' wurde gewaehlt.}%
\RequirePackage[activate]{pdfcprot}}
{}
\ifthenelse{\value{Tabellen}=1}
{\typeout{Paket tah Meldung: Die Option `tabellen' wurde gewaehlt.}%
\RequirePackage{tabularx}
\RequirePackage{ragged2e}
\RequirePackage{dcolumn}
\RequirePackage{booktabs}
\newcolumntype{L}{>{\RaggedRight\hspace{0pt}\arraybackslash}l}
\newcolumntype{Y}{>{\RaggedRight\hspace{0pt}\arraybackslash}X}
\newcolumntype{d}[1]{>{\DC@{.}{,}{#1}}l<{\DC@end}}
}
{}
\endinput
我其实也不需要所有功能。因此,最好将其精简为所需的最少功能。
答案1
可选参数\ProvidesPackage
必须采用以下形式
[yyyy/mm/dd Additional info]
例如
\ProvidesPackage{tahbiblatex}[2012/04/10, by tah modified by sm and egreg]
特别是,一位数的天数或月份数必须0
以年份为前缀必须为四位数形式。因此,2013 年 1 月 2 日必须表示为
2013/01/02
转到包的内容,所有这些\pdfoutput
都是错误的:需要包ifpdf
并使用\ifpdf
它提供的条件。这是一个修正版本;请注意,为每个选项分配一个计数器会浪费资源:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tahbiblatex}[2012/04/10, by tah modified by sm]
\RequirePackage{ifpdf}
\DeclareOption{latin1}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{applemac}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{cp850}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{utf8}{\PassOptionsToPackage{\CurrentOption}{inputenc}}
\DeclareOption{dvi}{\pdfoutput=\z@\pdffalse}
\DeclareOption{grafiken}{\let\tah@grafiken=T}
\DeclareOption{randausgleich}{\let\tah@randausgleich=T}
\DeclareOption{tabellen}{\let\tah@tabellen=T}
\DeclareOption{sync}{\let\tah@sync=T}
\ProcessOptions\relax
\RequirePackage{fixltx2e}
\RequirePackage{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[T1]{url}
\RequirePackage{setspace}
\RequirePackage{textcomp}
\newcommand{\urlangabe}[2]{%
$\langle$\url{#1}$\rangle$ -- Zugriff am #2}
\def\hierlockern {\begingroup \def\par{\endgraf\endgroup}%
\tolerance 1414
\hbadness 1414
\emergencystretch 1.5em
\hfuzz 0.3pt
\vfuzz \hfuzz
\raggedbottom
}
\newcommand{\alleslockern}{%
\tolerance 1414
\hbadness 1414
\emergencystretch 1.5em
\hfuzz 0.3pt
\vfuzz \hfuzz
\raggedbottom
}
\ifdefined\tah@grafiken
\typeout{Paket tah Meldung: Die Option `grafiken' fuer
\ifpdf PDF\else DVI\fi\space wurde gewaehlt.}
\fi
\ifdefined\tah@sync
\ifpdf
\RequirePackage{pdfsync}
\typeout{Paket tah Meldung: Die Option `sync' fuer PDF wurde gewaehlt.}
\else
\RequirePackage{srcltx}
\typeout{Paket tah Meldung: Die Option `sync' fuer DVI wurde gewaehlt.}%
\fi
\fi
\ifdefined\tah@randausgleich
\typeout{Paket tah Meldung: Die Option `randausgleich' wurde gewaehlt.}
\RequirePackage{microtype}
\fi
\ifdefined\tah@tabellen
\typeout{Paket tah Meldung: Die Option `tabellen' wurde gewaehlt.}
\RequirePackage{tabularx}
\RequirePackage{ragged2e}
\RequirePackage{dcolumn}
\RequirePackage{booktabs}
\newcolumntype{L}{>{\RaggedRight\hspace{0pt}\arraybackslash}l}
\newcolumntype{Y}{>{\RaggedRight\hspace{0pt}\arraybackslash}X}
\newcolumntype{d}[1]{>{\DC@{.}{,}{#1}}l<{\DC@end}}
\fi
\endinput
我不建议加载该pdfsync
软件包:如今 SyncTeX 技术已经好多了。与其使用功能更强大的软件包,不如使用pdfcprot
其他更强大的microtype
软件包。