\newfloatsetup 未定义

\newfloatsetup 未定义

尝试恢复使用 LuaLateX 编译复杂项目的能力时(现在我可以找到/使用 documentclass)遇到了这个编译错误:

German Hyphenation Patterns (Reformed Orthography, 2006) `dehyphn-x' 2019-04-04
 (WL)))))) (/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.sty
(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty)
(/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.def)
(/usr/share/texlive/texmf-dist/tex/latex/csquotes/csquotes.cfg))
(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty
(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-luatex.def)
(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg))
(/usr/share/texlive/texmf-dist/tex/lualatex/selnolig/selnolig.sty
=== Package selnolig, Version 0.302, Date 2015/10/26 ===

(/usr/share/texlive/texmf-dist/tex/lualatex/selnolig/selnolig-german-patterns.s
ty)
(/usr/share/texlive/texmf-dist/tex/lualatex/selnolig/selnolig-german-hyphex.sty
)) (/usr/share/texlive/texmf-dist/tex/latex/newfloat/newfloat.sty)
! Undefined control sequence.
<recently read> \newfloatsetup 
               
l.276   within=none}
                 
?

在本页讨论之后,我通过复制自定义类/包的内容生成了 MWE。在我看来,在我实际遇到任何自定义代码之前,错误就已经触发了。

这是我推测的 MWE:

\documentclass[%
    fontsize=12,%
    DIV=calc,%
    BCOR=10mm,%
    bibliography=totoc,%
    % TODO: Change this for publication
    oneside,%
    ]{scrbook}

% Seitenlayout
\RequirePackage[%
    includehead,%
    includefoot,%
    footskip=0.8cm,%
    left=2.5cm,%
    right=5.5cm,%
    top=1cm,%
    bottom=1.2cm]{geometry}

% TODO: Das muss noch bearbeitet werden. Ganzseitige Notenbeispiele
% funktionieren noch nicht richtig mit lyluatex.
%
% Additional formatting for headers and footers
% (relevant for full-page music examples)
%\RequirePackage{scrlayer-scrpage}
%\pagestyle{scrheadings}
%\cfoot{--\,\pagemark\,--}


% Seitenlayout
\RequirePackage[%
    includehead,%
    includefoot,%
    footskip=0.8cm,%
    left=2.5cm,%
    right=5.5cm,%
    top=1cm,%
    bottom=1.2cm]{geometry}


% Durchgehende Nummerierung von Fußnoten
% (gehört eigentlich nicht zu TOC, passt aber nirgends besser hin)
\RequirePackage{chngcntr}
\counterwithout*{footnote}{chapter}

% Teil-Inhaltsverzeichnisse pro Buchteil
% TODO: Das soll so nicht gemacht werden, minitoc ist nicht
% mit KOMA-Script kompatibel. Ich habe aber noch keine
% andere Lösung für \part-TOCs gefunden.
%\usepackage{minitoc}
%\setcounter{minitocdepth}{4}

% \subfiletoc
% Titel und TOC, die nur gesetzt werden, wenn wir uns
% in einem Subfile befinden.
% TODO: Das war eigentlich nur als Hilfe für während der Arbeit gedacht
% und wäre mit \part-TOCs obsolet.
% Ich glaube, damit könnte man das ganze \issubfile-Zeug entfernen.
% Momentan ist \subfiletoc »leer«.

% Check if we're in a subfile and set a flag
\makeatletter
\newcommand{\issubfile}{
    \@ifclassloaded{subfiles}
    {\def\subfiletest{true}}
    {}
}
\makeatother
% Run it once
\issubfile

% Helper function that checks if a flag is set
\makeatletter
\newcommand*{\ifmacrodefined}[1]{%
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname #1\endcsname\relax
    \expandafter\@secondoftwo
    \else
    \expandafter\@firstoftwo
    \fi
}
\makeatother

% If we _are_ in a subfile
% then redefine the respective commands
%\ifmacrodefined{subfiletest}{
%   \newcommand{\subfiletoc}{%
%       \maketitle
%       \setcounter{tocdepth}{3}
%       \tableofcontents
%   }
%}{
%   \newcommand{\subfiletoc}{}
%}

\setcounter{tocdepth}{3}

%\newcommand{\subfiletoc}{%
%\let\maintocdepth\value{tocdepth}%
%\setcounter{tocdepth}{5}%
%\tableofcontents

%\setcounter{tocdepth}\maintocdepth
%\clearpage
%}

\newcommand{\subfiletoc}


% Grundlegende Einbindung der Lua-Funktionalität
% TODO: Hier ist mir noch nicht klar, wie das mit dem
%       Fehlerhandling geht. lyluatex stellt Fehler besser dar.
\RequirePackage{luatexbase}

% Separates Kompilieren einzelner Kapitel
\RequirePackage{subfiles}

% Grafikdateien
\RequirePackage{graphicx}

% Farben
\RequirePackage{color}

% Bevorzuge bei Namenskonflikten PDF-Dateien vor PNG
\usepackage{grfext}
\PrependGraphicsExtensions*{.pdf}

% Einfügen von PDF-Seiten und -Dokumenten
% TODO: Kann das nicht gelöscht werden, wenn auch
% 'musicexamples' das Paket lädt?
\RequirePackage{pdfpages}

% Verwendet zum Einfügen von ganzseitigen Beispielen auf der
% nächsten Seite, ohne den Textfluss zu unterbrechen.
% TODO: 
% a) das sollte von 'musicexamples' selbst eingebunden werden
%    (=> kann hier entfernt werden)
% b) das funktioniert noch nicht im Zusammenhang mit lyluatex
\RequirePackage{afterpage}

% Listenformatierung
\RequirePackage{mdwlist}
\RequirePackage{paralist}

% Tabellenformatierung
\RequirePackage{booktabs}
% insbesondere lange Tabellen über Seitenumbruch hinaus
\RequirePackage{longtable}

% Fußnoten
% Formatierung
\usepackage{ragged2e}
\RequirePackage[ragged, hang]{footmisc}
\setlength{\footnotemargin}{3ex}
% Aufeinanderfolgende Fußnoten sollen durch ein Komma getrennt werden
% https://tex.stackexchange.com/questions/40072/incompatibility-between-footmisc-option-multiple-and-hyperref
\let\oldFootnote\footnote
\newcommand\nextToken\relax
\renewcommand\footnote[1]{%
    \oldFootnote{#1}\futurelet\nextToken\isFootnote}
\newcommand\isFootnote{%
    \ifx\footnote\nextToken\textsuperscript{,}\fi}

% Floatumgebungen mit umlaufendem Text
\RequirePackage{wrapfig}

% Mehrspaltiger Text
% TODO: Wird derzeit nur einmal für den Satz zweier Gedichte verwendet,
% dafür gibt es m.E. aber ein spezialisiertes Package
\RequirePackage{multicol}

% Mache Bildunterschriften konfigurierbar
\RequirePackage{caption}

% Lade die Lua-Funktionalität mit einem einzelnen Befehl
% (damit sie in den verschiedenen Packages genutzt werden kann)
\newcommand{\loadLuaFunctions}{%
    \directlua{ lua = require(kpse.find_file("ulDissLua.lua") or "ulDissLua.lua")}}

% Dieses Package wird nur von dem Pandoc-generierten Code benutzt
% und kann nach Durcharbeiten des B-Teils gelöscht werden.
\RequirePackage{supertabular}


% Environment: material
%
% Vorläufig ausformulierter Text, der evtl. verwendet werden könnte.
% Oder Text, der herausgenommen wird, ohne ihn gleich zu löschen.
%
\newenvironment{material}{%
\begingroup
\color{blue}
\medskip
\noindent \textsf{Material}

\smallskip
\hrule
\begin{quote}}
{\end{quote}
\hrule
\medskip
\endgroup}

% Environment: stichworte
%
% Besondere Aufzählungsumgebung für die Gliederung und Planung der Arbeit.
% Standardtitel ist »Stichworte/Gliederung:«,
% kann durch optionales Argument geändert werden.
%
\newenvironment{stichworte}[1][Stichworte/Gliederung:]{%
{\color{red}{

\textbfsf{#1}

\medskip
\hrule}}
\begin{itemize}
}{%
\end{itemize}
{\color{red}{\hrule}}

\bigskip
}

% auffälliges »TODO« Element.
% Titel kann im optionalen Argument geändert werden.
\newcommand{\todo}[2][TODO: ]{{\color{red}{\textbf{\textsf{[#1#2]}}}}}


% Allgemeine Typografie-Einstellungen
\RequirePackage{fontspec}
\frenchspacing

\defaultfontfeatures{
    Ligatures=TeX,
    Scale=MatchLowercase,
    Numbers=Proportional,
    Numbers=OldStyle
}

% Schriftarten
\RequirePackage[osf,proportional]{libertine}
\setmonofont[Scale=MatchLowercase]{InconsolataN}

% Sprache
\RequirePackage[ngerman]{babel}

% Wird nur von biblatex verwendet
\RequirePackage{csquotes}

% Allgemeine typografische Verbesserungen
\RequirePackage{microtype}
\RequirePackage[ngerman]{selnolig}


% abbildung
%
% Modifiertes, zentriertes 'figure'-Environment
% TODO: ändern in 'manuskript', eigener Zähler, eigenes Verzeichnis
\newenvironment{abbildung}[1][htp]{
\begin{figure}[#1]
    \centering}
{\end{figure}}

% Darstellung der Environments
\captionsetup[figure]{
    format=plain,
    font=small,
    labelfont=sf,
    within=none}

\captionsetup[abbildung]{
    format=plain,
    font=small,
    labelfont=sf,
    within=none}

有什么想法/提示可能导致这种情况的原因吗?

谢谢您的任何提示/想法。

答案1

这在 texlive 2019 中出现错误,但在 texlive 2021 中编译正常:

\documentclass[]{article}
\usepackage{caption}

\captionsetup[table]{
    format=plain,
    font=small,
    labelfont=sf,
    within=none} 

\captionsetup[figure]{
    format=plain,
    font=small,
    labelfont=sf,
    within=none}

\begin{document}
abc
\end{document}
(c:/texlive/2019/texmf-dist/tex/latex/newfloat/newfloat.sty
Package: newfloat 2019/09/02 v1.1l Defining new floating environments (AR)
)
! Undefined control sequence.
<recently read> \newfloatsetup 
                               
l.69    within=none}

问题在于 newfloat 包是按组加载的。解决方法是在设置浮点数之前先加载它:

\documentclass[]{article}
\usepackage{caption}
\usepackage{newfloat}
\captionsetup[table]{
    format=plain,
    font=small,
    labelfont=sf,
    within=none} 

\captionsetup[figure]{
    format=plain,
    font=small,
    labelfont=sf,
    within=none}

\begin{document}
abc
\end{document}

答案2

您显示的日志片段显示newfloat包正在加载(但没有加载keyval\newfloatsetup在之前扫描后未定义。

这意味着你拥有的东西本质上等同于

\documentclass{article}
\usepackage{graphicx}

{
\usepackage{newfloat}

}
\expandafter\newfloatsetup\expanded{
              within=none}


\begin{document}


\end{document}

其产生的终端输出为

LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-01-21>
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/local/texlive/2021/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/graphicx.sty
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/graphics.sty
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics/trig.sty)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics-cfg/graphics.cfg)
(/usr/local/texlive/2021/texmf-dist/tex/latex/graphics-def/pdftex.def)))
(/usr/local/texlive/2021/texmf-dist/tex/latex/newfloat/newfloat.sty)
! Undefined control sequence.
<recently read> \newfloatsetup 
                               
l.10               within=none}
                               
?

最后几行与您显示的形式完全匹配。

相关内容