Hallo!
Ich weiß nicht, ob es sich um einen Fehler von hyperref oder um einen
Fehler von scrwfile handelt, aber aus irgendeinem Grunde liefert das
folgende Minimalbeispiel
\documentclass{scrartcl} \makeatletter \usepackage{hyperref} \usepackage{scrwfile} \newcount\mycount \listfiles \begin{document} % \show\@starttoc \mycount=1 \loop \@starttoc{\the\mycount}% \addtocontents{\the\mycount}{file: \jobname.\the\mycount\\}% \advance\mycount by 1\relax \ifnum\mycount<17 \repeat \end{document}
jeweils beim _ersten_ LaTeX-Durchlauf die folgenden Fehlermeldungen:
| ! No room for a new \write . | \ch@ck ...\else \errmessage {No room for a new #3} | \fi | l.15 \repeat | | ? | \tf@13=\write16 | ! Bad number (16). | <recently read> \tf@13 | | l.15 \repeat | | ? | ! No room for a new \write . | \ch@ck ...\else \errmessage {No room for a new #3} | \fi | l.15 \repeat | | ? | \tf@14=\write17 | ! Bad number (17). | <recently read> \tf@14 | | l.15 \repeat | | ? | ! No room for a new \write . | \ch@ck ...\else \errmessage {No room for a new #3} | \fi | l.15 \repeat | | ? | \tf@15=\write18 | ! Bad number (18). | <recently read> \tf@15 | | l.15 \repeat | | ? | ! No room for a new \write . | \ch@ck ...\else \errmessage {No room for a new #3} | \fi | l.15 \repeat | | ? | \tf@16=\write19 | ! Bad number (19). | <recently read> \tf@16
Ich habe jetzt nicht groß Ursachenforschung betrieben, aber mir kommt es so vor,
als ob das hyperref-Paket die Eigenart hätte, nur beim ersten LaTeX-Durchlauf
das \@starttoc-Makro über den \AtBeginDocument-hook oder ähnliches nochmal
umzudefinieren und dabei die durch scrwfile nicht über diesen Hook und damit
schon vorher gegebene Definition zu überschreiben.
Hier noch der \listfiles-Auszug:
*File List* scrartcl.cls 2012/07/29 v3.11b KOMA-Script document class (article) scrkbase.sty 2012/07/29 v3.11b KOMA-Script package (KOMA-Script-dependent ba sics and keyval usage) scrbase.sty 2012/07/29 v3.11b KOMA-Script package (KOMA-Script-independent basics and keyval usage) keyval.sty 1999/03/16 v1.13 key=value parser (DPC) scrlfile.sty 2012/06/15 v3.12 KOMA-Script package (loading files) tocbasic.sty 2012/04/04 v3.10b KOMA-Script package (handling toc-files) scrsize11pt.clo 2012/07/29 v3.11b KOMA-Script font size class option (11pt) typearea.sty 2012/07/29 v3.11b KOMA-Script package (type area) hyperref.sty 2012/11/06 v6.83m Hypertext links for LaTeX hobsub-hyperref.sty 2012/04/25 v1.12 Bundle oberdiek, subset hyperref (HO) hobsub-generic.sty 2012/04/25 v1.12 Bundle oberdiek, subset generic (HO) hobsub.sty 2012/04/25 v1.12 Construct package bundles (HO) infwarerr.sty 2010/04/08 v1.3 Providing info/warning/error messages (HO) ltxcmds.sty 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) ifluatex.sty 2010/03/01 v1.3 Provides the ifluatex switch (HO) ifvtex.sty 2010/03/01 v1.5 Detect VTeX and its facilities (HO) intcalc.sty 2007/09/27 v1.1 Expandable calculations with integers (HO) ifpdf.sty 2011/01/30 v2.3 Provides the ifpdf switch (HO) etexcmds.sty 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) kvsetkeys.sty 2012/04/25 v1.16 Key value parser (HO) kvdefinekeys.sty 2011/04/07 v1.3 Define keys (HO) pdftexcmds.sty 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO) pdfescape.sty 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) bigintcalc.sty 2012/04/08 v1.3 Expandable calculations on big integers (HO) bitset.sty 2011/01/30 v1.1 Handle bit-vector datatype (HO) uniquecounter.sty 2011/01/30 v1.2 Provide unlimited unique counter (HO) letltxmacro.sty 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) hopatch.sty 2011/06/24 v1.1 Wrapper for package hooks (HO) xcolor-patch.sty 2011/01/30 xcolor patch atveryend.sty 2011/06/30 v1.8 Hooks at the very end of document (HO) atbegshi.sty 2011/10/05 v1.16 At begin shipout hook (HO) refcount.sty 2011/10/16 v3.4 Data extraction from label references (HO) hycolor.sty 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) ifxetex.sty 2010/09/12 v0.6 Provides ifxetex conditional auxhook.sty 2011/03/04 v1.3 Hooks for auxiliary files (HO) kvoptions.sty 2011/06/30 v3.11 Key value format for package options (HO) pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive url.sty 2006/04/12 ver 3.3 Verb mode for urls, etc. hdvips.def 2012/11/06 v6.83m Hyperref driver for dvips pdfmark.def 2012/11/06 v6.83m Hyperref definitions for pdfmark specials rerunfilecheck.sty 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) scrwfile.sty 2012/03/05 v0.1d-alpha LaTeX2e KOMA-Script package (write and c lone files) nameref.sty 2012/10/27 v2.43 Cross-referencing by name of section gettitlestring.sty 2010/12/03 v1.4 Cleanup title references (HO)
So ist es und noch dazu
So ist es und noch dazu scheint es das nur zu machen, um eine weitgehend überflüssige Warnmeldung zu etwas auszugeben, was eigentlich gar nicht zum Aufgabenfeld von hyperref gehört …
Damit pfuscht es übrigens nicht nur scrwfile.sty ins Handwerk, sondern auch anderen Paketen, die
\@starttoc
umdefinieren, beispielsweise tocbasic.sty, falls in der Präambel\tocbasicautomode
aufgerufen wird, aber auch den ganzen ams-Klassen, ltxutil.sty, reftex4.cls und sicher noch einigen anderen mehr.Offenbar will sich der hyperref-Autor damit ersparen, nach der Aktivierung von hyperref auch mit den
\contentsline
-Anweisungen zurecht kommen zu müssen, die vor der Aktivierung von hyperref noch in Hilfsdateien geschrieben wurden. Aber wie er das macht, ist nicht die feine englische Art. Das könnte man an selbiger Stelle auch mito. .ä. machen, so dass dabei ein geändertes
\@starttoc
nicht kaputt geht. Zumindest aber könnte hyperref testen, ob die Definition den Erwartungen entspricht, bevor es da einfach die eigene Definition drüber bügelt.Aber Danke für den Hinweis. Ich werde mal gelegentlich sehen, wie ich da eine Lösung um hyperref (das in meinen Augen ohnehin viel zu viel per
\AtBeginDocument
macht) herum biege. Bis dahin gilt der Rat: scrwfile nicht zusammen mit hyperref verwenden.Ich habe mittels filehhook-Package einen Behelf gebastelt
Ich habe mittels filehhook-Package von Martin Scharrer einen Behelf
gebastelt, bei dem es egal zu sein scheint, ob bzw wann (vor oder nach
dem Behelf / vor oder nach dem scrwfile-Package) das hyperref-Package
geladen wird.
Ich muss aber dazu sagen, dass erstens ich das filehook-Package nicht genau
angeschaut habe und von daher nicht weiß, was für Probleme wiederum
durch dieses Package verursacht werden könnten und dass zweitens ich
mir auch nicht die Zeit genommen habe, den Behelf ausgiebig zu durchdenken/
zu testen.
In meinem konkreten Szenarium hat es jedenfalls funktioniert und damit war
ich erstmal zufrieden.
Mit freundlichem Gruß
Ulrich
Einen Haken zu finden ist nicht das Problem
Einen Haken zu finden ist nicht das Problem. Davon bietet scrlfile bereits genügend. Alle Seiteneffekte zu bedenken, ist schon eher ein Problem. Außerdem will ich bei der Gelegenheit natürlich auch gleich Auswirkungen auf tocbasic berücksichtigen, falls das notwendig ist.
Workaround
Ich habe nun einen Workaround für das unfreundliche Verhalten von hyperref eingebaut. Du kannst das gerne testen. Dazu benötigst Du die Dateien scrwfile.dtx und scrlogo.dtx aus dem Repository.