summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/expl3/l3msg.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-07-31 18:29:08 +0000
committerKarl Berry <karl@freefriends.org>2011-07-31 18:29:08 +0000
commit332d583e34cb464fadc271aac86368fc71af2c40 (patch)
tree24afad6e2f2915364873082b6bfad0bad04ba5bf /Master/texmf-dist/source/latex/expl3/l3msg.dtx
parented6913bb5d71e9779f8714d469d5903b9d328020 (diff)
rm expl3, now l3kernel
git-svn-id: svn://tug.org/texlive/trunk@23285 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/expl3/l3msg.dtx')
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3msg.dtx1402
1 files changed, 0 insertions, 1402 deletions
diff --git a/Master/texmf-dist/source/latex/expl3/l3msg.dtx b/Master/texmf-dist/source/latex/expl3/l3msg.dtx
deleted file mode 100644
index 26c631177ee..00000000000
--- a/Master/texmf-dist/source/latex/expl3/l3msg.dtx
+++ /dev/null
@@ -1,1402 +0,0 @@
-% \iffalse
-%% File: l3msg.dtx Copyright (C) 2009 LaTeX3 project
-%%
-%% It may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License (LPPL), either version 1.3c of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in the file
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the ``expl3 bundle'' (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% The released version of this bundle is available from CTAN.
-%%
-%% -----------------------------------------------------------------------
-%%
-%% The development version of the bundle can be found at
-%%
-%% http://www.latex-project.org/svnroot/experimental/trunk/
-%%
-%% for those people who are interested.
-%%
-%%%%%%%%%%%
-%% NOTE: %%
-%%%%%%%%%%%
-%%
-%% Snapshots taken from the repository represent work in progress and may
-%% not work or may contain conflicting material! We therefore ask
-%% people _not_ to put them into distributions, archives, etc. without
-%% prior consultation with the LaTeX Project Team.
-%%
-%% -----------------------------------------------------------------------
-%%
-%
-%<*driver|package>
-\RequirePackage{l3names}
-%</driver|package>
-%\fi
-\GetIdInfo$Id: l3msg.dtx 2052 2010-10-02 16:04:38Z will $
- {L3 Experimental LaTeX Messages module}
-%\iffalse
-%<*driver>
-%\fi
-\ProvidesFile{\filename.\filenameext}
- [\filedate\space v\fileversion\space\filedescription]
-%\iffalse
-\documentclass[full]{l3doc}
-\begin{document}
-\DocInput{l3msg.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \title{The \textsf{l3msg} package\thanks{This file
-% has version number \fileversion, last
-% revised \filedate.}\\
-% Communicating with the user}
-% \author{\Team}
-% \date{\filedate}
-% \maketitle
-%
-% \begin{documentation}
-%
-% Messages need to be passed to the user by modules, either when errors
-% occur or to indicate how the code is proceeding. The \pkg{l3msg}
-% module provides a consistent method for doing this (as opposed to
-% writing directly to the terminal or log).
-%
-% The system used by \pkg{l3msg} to create messages divides the process
-% into two distinct parts. Named messages are created in the first part
-% of the process; at this stage, no decision is made about the type
-% output that the message will produce. The second part of the process
-% is actually producing a message. At this stage a choice of message
-% \emph{class} has to be made, for example \texttt{error},
-% \texttt{warning} or \texttt{info}.
-%
-% By separating out the creation and use of messages, several benefits
-% are available. First, the messages can be altered later without
-% needing details of where they are used in the code. This makes it
-% possible to alter the language used, the detail level and so on.
-% Secondly, the output which results from a given message can be
-% altered. This can be done on a message class, module or message name
-% basis. In this way, message behaviour can be altered and messages can
-% be entirely suppressed.
-%
-%\section{Creating new messages}
-%
-% All messages have to be created before they can be used. Inside the
-% message text, spaces are \emph{not} ignored. A space where \TeX\
-% would normally gobble one can be created using |\ |, and a new line
-% with |\\|. New lines may have `continuation' text added by the
-% output system.
-%
-%\begin{function}{
-% \msg_new:nnnn |
-% \msg_new:nnn |
-% \msg_set:nnnn |
-% \msg_set:nnn
-%}
-% \begin{syntax}
-% "\msg_new:nnnn" \marg{module} \marg{message} \marg{text}
-% ~~~~\marg{more text}
-% \end{syntax}
-% Creates new <message> for <module> to produce <text> initially
-% and <more text> if requested by the user. <text> and <more text> can
-% use up to four macro parameters (|#1| to |#4|), which are supplied by
-% the message system. At the point where <message> is printed, the
-% material supplied for |#1| to |#4| will be subject to an x-type
-% expansion.
-%
-% An error will be raised by the \texttt{new} functions if the
-% message already exists: the \texttt{set} functions do not
-% carry any checking. For messages defined using
-% \cs{msg_new:nnn} or \cs{msg_set:nnn} \LaTeX3 will supply a
-% standard <more text> at the point the message is used, if this
-% is required.
-%\end{function}
-%
-%\section{Message classes}
-%
-% Creating message output requires the message to be given a class.
-%
-%\begin{function}{
-% \msg_class_new:nn |
-% \msg_class_set:nn
-%}
-% \begin{syntax}
-% "\msg_class_new:nn" \marg{class} \marg{code}
-% \end{syntax}
-% Creates new <class> to output a message, using <code> to process
-% the message text. The <class> should be a text value, while
-% the <code> may be any arbitrary material.
-%\end{function}
-%
-% The module defines several common message classes. The following
-% describes the standard behaviour of each class if no redirection of
-% the class or message is active. In all cases, the message may be
-% issued supplying \(0\) to \(4\) arguments. The code will
-% ensure that there an no errors if the number of arguments supplied
-% here does not match the number in the definition of the message
-% (although of course the sense of the message may be impaired).
-%
-%\begin{function}{
-% \msg_fatal:nnxxxx |
-% \msg_fatal:nnxxx |
-% \msg_fatal:nnxx |
-% \msg_fatal:nnx |
-% \msg_fatal:nn
-%}
-% \begin{syntax}
-% "\msg_fatal:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Issues <module> error message <name>, passing <arg one> to
-% <arg four> to the text-creating functions. After issuing a
-% fatal error the \TeX\ run will halt.
-%\end{function}
-%
-%\begin{function}{
-% \msg_error:nnxxxx |
-% \msg_error:nnxxx |
-% \msg_error:nnxx |
-% \msg_error:nnx |
-% \msg_error:nn
-%}
-% \begin{syntax}
-% "\msg_error:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Issues <module> error message <name>, passing <arg one> to
-% <arg four> to the text-creating functions.
-% \begin{texnote}
-% The standard output here is similar to \cs{PackageError}.
-% \end{texnote}
-%\end{function}
-%
-%\begin{function}{
-% \msg_warning:nnxxxx |
-% \msg_warning:nnxxx |
-% \msg_warning:nnxx |
-% \msg_warning:nnx |
-% \msg_warning:nn
-%}
-% \begin{syntax}
-% "\msg_warning:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Prints <module> message <name> to the terminal, passing <arg one> to
-% <arg four> to the text-creating functions.
-% \begin{texnote}
-% The standard output here is similar to \cs{PackageWarningNoLine}.
-% \end{texnote}
-%\end{function}
-%
-%\begin{function}{
-% \msg_info:nnxxxx |
-% \msg_info:nnxxx |
-% \msg_info:nnxx |
-% \msg_info:nnx |
-% \msg_info:nn
-%}
-% \begin{syntax}
-% "\msg_info:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Prints <module> message <name> to the log, passing <arg one> to
-% <arg four> to the text-creating functions.
-% \begin{texnote}
-% The standard output here is similar to \cs{PackageInfoNoLine}.
-% \end{texnote}
-%\end{function}
-%
-%\begin{function}{
-% \msg_log:nnxxxx|
-% \msg_log:nnxxx|
-% \msg_log:nnxx|
-% \msg_log:nnx|
-% \msg_log:nn
-%}
-% \begin{syntax}
-% "\msg_log:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Prints <module> message <name> to the log, passing <arg one> to
-% <arg four> to the text-creating functions. No continuation text is
-% added.
-%\end{function}
-%
-%\begin{function}{
-% \msg_trace:nnxxxx|
-% \msg_trace:nnxxx|
-% \msg_trace:nnxx|
-% \msg_trace:nnx|
-% \msg_trace:nn
-%}
-% \begin{syntax}
-% "\msg_trace:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Prints <module> message <name> to the log, passing <arg one> to
-% <arg four> to the text-creating functions. No continuation text is
-% added.
-%\end{function}
-%
-%\begin{function}{
-% \msg_none:nnxxxx|
-% \msg_none:nnxxx|
-% \msg_none:nnxx|
-% \msg_none:nnx|
-% \msg_none:nn
-%}
-% \begin{syntax}
-% "\msg_none:nnxxxx" \marg{module} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Does nothing: used for redirecting other message classes. Gobbles
-% arguments given.
-%\end{function}
-%
-% \section{Redirecting messages}
-%
-%\begin{function}{\msg_redirect_class:nn}
-% \begin{syntax}
-% "\msg_redirect_class:nn" \marg{class one} \marg{class two}
-% \end{syntax}
-% Changes the behaviour of messages of <class one> so that they
-% are processed using the code for those of <class two>. Multiple
-% redirections are possible. Redirection to a missing class or
-% infinite loops will raise errors when the messages are used,
-% rather than at the point of redirection.
-%\end{function}
-%
-%\begin{function}{\msg_redirect_module:nnn}
-% \begin{syntax}
-% "\msg_redirect_module:nnn" \marg{module} \marg{class one}
-% \marg{class two}
-% \end{syntax}
-% Redirects message of <class one> for <module> to act as though
-% they were from <class two>. Messages of <class one> from
-% sources other than <module> are not affected by this redirection.
-% \begin{texnote}
-% This function can be used to make some messages `silent' by
-% default. For example, all of the \texttt{trace} messages of
-% <module> could be turned off with:
-% \begin{verbatim}
-% \msg_redirect_module:nnn { module } { trace } { none }
-% \end{verbatim}
-% \end{texnote}
-%\end{function}
-%
-%\begin{function}{\msg_redirect_name:nnn}
-% \begin{syntax}
-% "\msg_redirect_name:nnn" \marg{module} \marg{message} \marg{class}
-% \end{syntax}
-% Redirects a specific <message> from a specific <module> to act
-% as a member of <class> of messages.
-% \begin{texnote}
-% This function can be used to make a selected message `silent'
-% without changing global parameters:
-% \begin{verbatim}
-% \msg_redirect_name:nnn { module } { annoying-message } { none }
-% \end{verbatim}
-% \end{texnote}
-%\end{function}
-%
-% \section{Support functions for output}
-%
-%\begin{function}{\msg_line_context:}
-% \begin{syntax}
-% "\msg_line_context:"
-% \end{syntax}
-% Prints the text specified in \cs{c_msg_on_line_tl} followed by
-% the current line in the current input file.
-% \begin{texnote}
-% This is similar to the text added to messages by \LaTeXe's
-% \cs{PackageWarning} and \cs{PackageInfo}.
-% \end{texnote}
-%\end{function}
-%
-%\begin{function}{\msg_line_number:}
-% \begin{syntax}
-% "\msg_line_number:"
-% \end{syntax}
-% Prints the current line number in the current input file.
-%\end{function}
-%
-%\begin{function}{
-% \msg_newline: |
-% \msg_two_newlines:
-%}
-% \begin{syntax}
-% "\msg_newline:"
-% \end{syntax}
-% Print one or two newlines with no continuation information.
-%\end{function}
-%
-% \section{Low-level functions}
-%
-% The low-level functions do not make assumptions about module names.
-% The output functions here produce messages directly, and do not
-% respond to redirection.
-%
-%\begin{function}{
-% \msg_generic_new:nnn |
-% \msg_generic_new:nn |
-% \msg_generic_set:nnn |
-% \msg_generic_set:nn
-%}
-% \begin{syntax}
-% "\msg_generic_new:nnn" \marg{name} \marg{text} \marg{more text}
-% \end{syntax}
-% Creates new message <name> to produce <text> initially and
-% <more text> if requested by the user. <text> and <more text> can use
-% up to four macro parameters ("#1" to "#4"), which are supplied by the
-% message system. Inside <text> and <more text> spaces are not ignored.
-%\end{function}
-%
-%\begin{function}{\msg_direct_interrupt:xxxxx}
-% \begin{syntax}
-% "\msg_direct_interrupt:xxxxx" \marg{first line} \marg{text}
-% ~~~~\marg{continuation} \marg{last line} \marg{more text}
-% \end{syntax}
-% Executes a \TeX\ error, interrupting compilation. The <first line>
-% is displayed followed by <text> and the input prompt. <more text> is
-% displays if requested by the user. If <more text> is blank a default
-% is supplied. Each line of <text> (broken with "\\") begins with
-% <continuation> and finishes off with <last line>.
-% <last line> has a period appended to it; do not add one yourself.
-%\end{function}
-%
-%\begin{function}{
-% \msg_direct_log:xx|
-% \msg_direct_term:xx
-%}
-% \begin{syntax}
-% "\msg_direct_log:xx" \marg{text} \marg{continuation}
-% \end{syntax}
-% Prints <text> to either the log or terminal. New lines (broken
-% with "\\") start with <continuation>.
-%\end{function}
-%
-% \section{Kernel-specific functions}
-%
-%\begin{function}{
-% \msg_kernel_new:nnnn |
-% \msg_kernel_new:nnn |
-% \msg_kernel_set:nnnn |
-% \msg_kernel_set:nnn
-%}
-% \begin{syntax}
-% "\msg_kernel_new:nnnn" \marg{divsion} \marg{name} \marg{text}
-% ~~~~\marg{more text}
-% \end{syntax}
-% Creates new kernel message <name> to produce <text> initially and
-% <more text> if requested by the user. <text> and <more text> can use
-% up to four macro parameters ("#1" to "#4"), which are supplied by the
-% message system. Kernel messages are divided into <divisions>, roughly
-% equivalent to the \LaTeXe\ package names used.
-%\end{function}
-%
-%\begin{function}{
-% \msg_kernel_fatal:nnxxxx |
-% \msg_kernel_fatal:nnxxx |
-% \msg_kernel_fatal:nnxx |
-% \msg_kernel_fatal:nnx |
-% \msg_kernel_fatal:nn
-%}
-% \begin{syntax}
-% "\msg_kernel_fatal:nnxx" \marg{division} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Issues kernel error message <name> for <division>, passing <arg one>
-% to <arg four> to the text-creating functions. The \TeX\ run then
-% halts. Cannot be redirected.
-%\end{function}
-%
-%\begin{function}{
-% \msg_kernel_error:nnxxxx |
-% \msg_kernel_error:nnxxx |
-% \msg_kernel_error:nnxx |
-% \msg_kernel_error:nnx |
-% \msg_kernel_error:nn
-%}
-% \begin{syntax}
-% "\msg_kernel_error:nnxx" \marg{division} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Issues kernel error message <name> for <division>, passing <arg one>
-% to <arg four> to the text-creating functions. Cannot be redirected.
-%\end{function}
-%
-%\begin{function}{
-% \msg_kernel_warning:nnxxxx |
-% \msg_kernel_warning:nnxxx |
-% \msg_kernel_warning:nnxx |
-% \msg_kernel_warning:nnx |
-% \msg_kernel_warning:nn
-%}
-% \begin{syntax}
-% "\msg_kernel_warning:nnxx" \marg{division} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Prints kernel message <name> for <division> to the terminal, passing
-% <arg one> to <arg four> to the text-creating functions.
-%\end{function}
-%
-%\begin{function}{
-% \msg_kernel_info:nnxxxx |
-% \msg_kernel_info:nnxxx |
-% \msg_kernel_info:nnxx |
-% \msg_kernel_info:nnx |
-% \msg_kernel_info:nn
-%}
-% \begin{syntax}
-% "\msg_kernel_info:nxx" \marg{division} \marg{name} \marg{arg one}
-% ~~~~\marg{arg two} \marg{arg three} \marg{arg four}
-% \end{syntax}
-% Prints kernel message <name> for <division> to the log, passing
-% <arg one> to <arg four> to the text-creating functions.
-%\end{function}
-%
-%\begin{function}{\msg_kernel_bug:x}
-% \begin{syntax}
-% "\msg_kernel_bug:x" \marg{text}
-% \end{syntax}
-% Short-cut for `This is a LaTeX bug: check coding' errors.
-%\end{function}
-%
-% \begin{function}{\msg_fatal_text:n}
-% \begin{syntax}
-% "\msg_fatal_text:n" \marg{package}
-% \end{syntax}
-% Prints `Fatal <package> error' for use in error messages.
-% \end{function}
-%
-%
-% \section{Variables and constants}
-%
-%\begin{variable}{
-% \c_msg_error_tl |
-% \c_msg_warning_tl |
-% \c_msg_info_tl
-%}
-% Simple headers for errors. Although these are marked as constants,
-% they could be changed for printing errors in a different language.
-%\end{variable}
-%
-%\begin{variable}{
-% \c_msg_coding_error_text_tl |
-% \c_msg_fatal_text_tl |
-% \c_msg_help_text_tl |
-% \c_msg_kernel_bug_text_tl |
-% \c_msg_kernel_bug_more_text_tl |
-% \c_msg_no_info_text_tl |
-% \c_msg_return_text_tl
-%}
-% Various pieces of text for use in messages, which are not changed by
-% the code here although they could be to alter the language. Although
-% these are marked as constants, they could be changed for printing
-% errors in a different language.
-%\end{variable}
-%
-%\begin{variable}{\c_msg_on_line_tl}
-% The `on line' phrase for line numbers. Although marked as a constant,
-% they could be changed for printing errors in a different language.
-%\end{variable}
-%
-%\begin{variable}{
-% \c_msg_text_prefix_tl |
-% \c_msg_more_text_prefix_tl
-%}
-% Header information for storing the `paths' to parts of a message.
-% Although these are marked as constants, they could be changed for
-% printing errors in a different language.
-%\end{variable}
-%
-%\begin{variable}{
-% \l_msg_class_tl |
-% \l_msg_current_class_tl |
-% \l_msg_current_module_tl
-%}
-% Information about message method, used for filtering.
-%\end{variable}
-%
-%\begin{variable}{\l_msg_names_clist}
-% List of all of the message names defined.
-%\end{variable}
-%
-%\begin{variable}{
-% \l_msg_redirect_classes_prop |
-% \l_msg_redirect_names_prop
-%}
-% Re-direction lists containing the class of message to convert an
-% different one.
-%\end{variable}
-%
-%\begin{variable}{\l_msg_redirect_classes_clist}
-% List so that filtering does not loop.
-%\end{variable}
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3msg} implementation}
-%
-% The usual lead-off.
-% \begin{macrocode}
-%<*package>
-\ProvidesExplPackage
- {\filename}{\filedate}{\fileversion}{\filedescription}
-\package_check_loaded_expl:
-%</package>
-%<*initex|package>
-% \end{macrocode}
-%
-% \LaTeX\ is handling context, so the \TeX\ ``noise'' is turned down.
-% \begin{macrocode}
-\int_set:Nn \tex_errorcontextlines:D { \c_minus_one }
-% \end{macrocode}
-%
-% \subsection{Variables and constants}
-%
-%\begin{macro}{\c_msg_error_tl}
-%\begin{macro}{\c_msg_warning_tl}
-%\begin{macro}{\c_msg_info_tl}
-% Header information.
-% \begin{macrocode}
-\tl_const:Nn \c_msg_error_tl { error }
-\tl_const:Nn \c_msg_warning_tl { warning }
-\tl_const:Nn \c_msg_info_tl { info }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%
-% \begin{macro}{\msg_fatal_text:n,\msg_see_documentation_text:n}
-% Contextual header/footer information.
-% \begin{macrocode}
-\cs_new:Npn \msg_fatal_text:n #1 { Fatal~#1~error }
-\cs_new:Npn \msg_see_documentation_text:n #1
- { See~the~#1~documentation~for~further~information }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%\begin{macro}{\c_msg_coding_error_text_tl}
-%\begin{macro}{\c_msg_fatal_text_tl}
-%\begin{macro}{\c_msg_help_text_tl}
-%\begin{macro}{\c_msg_kernel_bug_text_tl}
-%\begin{macro}{\c_msg_kernel_bug_more_text_tl}
-%\begin{macro}{\c_msg_no_info_text_tl}
-%\begin{macro}{\c_msg_return_text_tl}
-% Simple pieces of text for messages.
-% \begin{macrocode}
-\tl_const:Nn \c_msg_coding_error_text_tl {
- This~is~a~coding~error.
- \msg_two_newlines:
-}
-\tl_const:Nn \c_msg_fatal_text_tl {
- This~is~a~fatal~error:~LaTeX~will~abort
-}
-\tl_const:Nn \c_msg_help_text_tl {
- For~immediate~help~type~H~<return>
-}
-\tl_const:Nn \c_msg_kernel_bug_text_tl {
- This~is~a~LaTeX~bug:~check~coding!
-}
-\tl_const:Nn \c_msg_kernel_bug_more_text_tl {
- There~is~a~coding~bug~somewhere~around~here. \\
- This~probably~needs~examining~by~an~expert.
- \c_msg_return_text_tl
-}
-\tl_const:Nn \c_msg_no_info_text_tl {
- LaTeX~does~not~know~anything~more~about~this~error,~sorry.
- \c_msg_return_text_tl
-}
-\tl_const:Nn \c_msg_return_text_tl {
- \\ \\
- Try~typing~<return>~to~proceed.
- \\
- If~that~doesn't~work,~type~X~<return>~to~quit
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}[aux]{\c_msg_hide_tl<spaces>}
-% An empty variable with a number of (category code 11) periods at the
-% end of its name. This is used to push the \TeX\ part of an error
-% message ``off the screen''.
-% \begin{macrocode}
-\group_begin:
-\char_make_letter:N \.
-\tl_to_lowercase:n {
- \group_end:
- \tl_const:Nn \c_msg_hide_tl................................................
- {}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\c_msg_on_line_tl}
-% Text for ``on line''.
-% \begin{macrocode}
-\tl_const:Nn \c_msg_on_line_tl { on~line }
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\c_msg_text_prefix_tl}
-%\begin{macro}{\c_msg_more_text_prefix_tl}
-% Prefixes for storage areas.
-% \begin{macrocode}
-\tl_const:Nn \c_msg_text_prefix_tl { msg_text ~>~ }
-\tl_const:Nn \c_msg_more_text_prefix_tl { msg_text_more ~>~ }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\l_msg_class_tl}
-%\begin{macro}{\l_msg_current_class_tl}
-%\begin{macro}{\l_msg_current_module_tl}
-% For holding the current message method and that for redirection.
-% \begin{macrocode}
-\tl_new:N \l_msg_class_tl
-\tl_new:N \l_msg_current_class_tl
-\tl_new:N \l_msg_current_module_tl
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\l_msg_names_clist}
-% Lists used for filtering.
-% \begin{macrocode}
-\clist_new:N \l_msg_names_clist
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\l_msg_redirect_classes_prop}
-%\begin{macro}{\l_msg_redirect_names_prop}
-% For filtering messages, a list of all messages and of those which have
-% to be modified is required.
-% \begin{macrocode}
-\prop_new:N \l_msg_redirect_classes_prop
-\prop_new:N \l_msg_redirect_names_prop
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\begin{macro}{\l_msg_redirect_classes_clist}
-% To prevent an infinite loop.
-% \begin{macrocode}
-\clist_new:N \l_msg_redirect_classes_clist
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\l_msg_tmp_tl}
-% A scratch variable.
-% \begin{macrocode}
-\tl_new:N \l_msg_tmp_tl
-% \end{macrocode}
-%\end{macro}
-%
-% \subsection{Output helper functions}
-%
-%\begin{macro}{\msg_line_number:}
-%\begin{macro}{\msg_line_context:}
-% For writing the line number nicely.
-% \begin{macrocode}
-\cs_new_nopar:Npn \msg_line_number: {
- \toks_use:N \tex_inputlineno:D
-}
-\cs_new_nopar:Npn \msg_line_context: {
- \c_msg_on_line_tl
- \c_space_tl
- \msg_line_number:
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_newline:}
-%\begin{macro}{\msg_two_newlines:}
-% Always forces a new line.
-% \begin{macrocode}
-\cs_new_nopar:Npn \msg_newline: { ^^J }
-\cs_new_nopar:Npn \msg_two_newlines: { ^^J ^^J }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\subsection{Generic functions}
-%
-% The lowest level functions make no assumptions about modules,
-% \emph{etc.}
-%
-%\begin{macro}{\msg_generic_new:nnn}
-%\begin{macro}{\msg_generic_new:nn}
-% Creating a new message is basically the same as the non-checking
-% version, and so after a check everything hands over.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_generic_new:nnn #1 {
- \chk_if_free_cs:c { \c_msg_text_prefix_tl #1 :xxxx }
- \msg_generic_set:nnn {#1}
-}
-\cs_new_protected_nopar:Npn \msg_generic_new:nn #1 {
- \chk_if_free_cs:c { \c_msg_text_prefix_tl #1 :xxxx }
- \msg_generic_set:nn {#1}
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_generic_set:nnn}
-%\begin{macro}{\msg_generic_set:nn}
-%\begin{macro}[aux]{\msg_generic_set_clist:n}
-% Creating a message is quite simple. There must be a short text part,
-% while the longer text may or may not be available.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_generic_set:nnn #1#2#3 {
- \msg_generic_set_clist:n {#1}
- \cs_set:cpn { \c_msg_text_prefix_tl #1 :xxxx } ##1##2##3##4 {#2}
- \cs_set:cpn { \c_msg_more_text_prefix_tl #1 :xxxx } ##1##2##3##4 {#3}
-}
-\cs_new_protected_nopar:Npn \msg_generic_set:nn #1#2 {
- \msg_generic_set_clist:n {#1}
- \cs_set:cpn { \c_msg_text_prefix_tl #1 :xxxx } ##1##2##3##4 {#2}
- \cs_set_eq:cN { \c_msg_more_text_prefix_tl #1 :xxxx } \c_undefined
-}
-\cs_new_protected_nopar:Npn \msg_generic_set_clist:n #1 {
- \clist_if_in:NnF \l_msg_names_clist { // #1 / } {
- \clist_put_right:Nn \l_msg_names_clist { // #1 / }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_direct_interrupt:xxxxx}
-%\begin{macro}[aux]{\msg_direct_interrupt:n}
-% The low-level interruption macro is rather opaque, unfortunately. The
-% idea here is to create a a message which hides all of \TeX's own
-% information by filling the output up with dots. To achieve this,
-% dots have to be letters. The odd
-% \cs{c_msg_hide_tl<dots>} actually does the hiding: it is the
-% large run of dots in the name that is important here. The meaning
-% of "\\" is altered so that the explanation text is a simple run
-% whilst the initial error has line-continuation shown.
-% \begin{macrocode}
-\group_begin:
- \char_set_lccode:nn {`\&} {`\ } % {
- \char_set_lccode:w `\} = `\ \scan_stop:
- \char_set_lccode:w `\& = `\!\scan_stop:
- \char_make_active:N \&
- \char_make_letter:N \.
-\tl_to_lowercase:n{
- \group_end:
- \cs_new_protected:Npn \msg_direct_interrupt:xxxxx #1#2#3#4#5 {
- \group_begin:
- \cs_set_nopar:Npn \\ {\msg_newline:}
- \cs_set_eq:NN \ \c_space_tl
- \tl_set:Nx \l_tmpa_tl {#5}
- \tl_set:Nx \l_tmpb_tl {\c_msg_no_info_text_tl}
- \msg_direct_interrupt_aux:n {#5}
- \tex_errhelp:D \l_msg_tmp_tl
- \cs_set_nopar:Npn \\ {\msg_newline: !~#3}
- \iow_term:x
- {\msg_newline: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
- \cs_set:Npn & {
- \tex_errmessage:D{
- \\ #1 \\ \\ #2 \\ \\ #4
- \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl
- { . \\ \c_msg_help_text_tl }
- \c_msg_hide_tl................................................
- }
- }
- &
- \group_end:
- }
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new_protected:Npn \msg_direct_interrupt_aux:n #1 {
- \cs_set_nopar:Npn \\ {\msg_newline: |~}
- \tl_if_empty:nTF {#1} {
- \tl_set:Nx \l_msg_tmp_tl { { \c_msg_no_info_text_tl } }
- }{
- \tl_set:Nx \l_msg_tmp_tl { {
- |'''''''''''''''''''''''''''''''''''''''''''''''\\
- #1^^J
- |...............................................^^J
- } }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_direct_log:xx}
-%\begin{macro}{\msg_direct_term:xx}
-% Printing to the log or terminal without a stop is rather easier.
-% \begin{macrocode}
-\cs_new_protected:Npn \msg_direct_log:xx #1#2 {
- \group_begin:
- \cs_set:Npn \\ { \msg_newline: #2 }
- \cs_set_eq:NN \ \c_space_tl
- \iow_log:x { #1 \msg_newline: }
- \group_end:
-}
-\cs_new_protected:Npn \msg_direct_term:xx #1#2 {
- \group_begin:
- \cs_set:Npn \\ { \msg_newline: #2 }
- \cs_set_eq:NN \ \c_space_tl
- \iow_term:x { #1 \msg_newline: }
- \group_end:
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\subsection{General functions}
-%
-% The main functions for messaging are built around the separation of
-% module from the message name. These have short names as they will be
-% widely used.
-%
-%\begin{macro}{\msg_new:nnnn}
-%\begin{macro}{\msg_new:nnn}
-%\begin{macro}{\msg_set:nnnn}
-%\begin{macro}{\msg_set:nnn}
-% For making messages: all aliases.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_new:nnnn #1#2 {
- \msg_generic_new:nnn { #1 / #2 }
-}
-\cs_new_protected_nopar:Npn \msg_new:nnn #1#2 {
- \msg_generic_new:nn { #1 / #2 }
-}
-\cs_new_protected_nopar:Npn \msg_set:nnnn #1#2 {
- \msg_generic_set:nnn { #1 / #2 }
-}
-\cs_new_protected_nopar:Npn \msg_set:nnn #1#2 {
- \msg_generic_set:nn { #1 / #2 }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_class_new:nn}
-%\begin{macro}{\msg_class_set:nn}
-% Creating a new class produces three new functions, with varying
-% numbers of arguments. The \cs{msg_class_loop:n} function is set up
-% so that redirection will work as desired.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_class_new:nn #1 {
- \chk_if_free_cs:c { msg_ #1 :nnxxxx }
- \prop_new:c { l_msg_redirect_ #1 _prop }
- \msg_class_set:nn {#1}
-}
-\cs_new_protected_nopar:Npn \msg_class_set:nn #1#2 {
- \prop_clear:c { l_msg_redirect_ #1 _prop }
- \cs_set_protected:cpn { msg_ #1 :nnxxxx } ##1##2##3##4##5##6 {
- \msg_use:nnnnxxxx {#1} {#2} {##1} {##2} {##3} {##4} {##5} {##6}
- }
- \cs_set_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5 {
- \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { }
- }
- \cs_set_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4 {
- \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { }
- }
- \cs_set_protected:cpx { msg_ #1 :nnx } ##1##2##3 {
- \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { }
- }
- \cs_set_protected:cpx { msg_ #1 :nn } ##1##2 {
- \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} { } { } { } { }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}[aux]{\msg_use:nnnnxxxx}
-% The main message-using macro creates two auxiliary functions: one
-% containing the code for the message, and the second a loop function.
-% There is then a hand-off to the system for checking if redirection is
-% needed.
-% \begin{macrocode}
-\cs_new_protected:Npn \msg_use:nnnnxxxx #1#2#3#4#5#6#7#8 {
- \cs_set_nopar:Npn \msg_use_code: {
- \clist_clear:N \l_msg_redirect_classes_clist
- #2
- }
- \cs_set:Npn \msg_use_loop:n ##1 {
- \clist_if_in:NnTF \l_msg_redirect_classes_clist {#1} {
- \msg_kernel_error:nn { msg } { redirect-loop } {#1}
- }{
- \clist_put_right:Nn \l_msg_redirect_classes_clist {#1}
- \cs_if_exist:cTF { msg_ ##1 :nnxxxx } {
- \use:c { msg_ ##1 :nnxxxx } {#3} {#4} {#5} {#6} {#7} {#8}
- }{
- \msg_kernel_error:nnx { msg } { message-class-unknown } {##1}
- }
- }
- }
- \cs_if_exist:cTF { \c_msg_text_prefix_tl #3 / #4 :xxxx } {
- \msg_use_aux:nnn {#1} {#3} {#4}
- }{
- \msg_kernel_error:nnxx { msg } { message-unknown } {#3} {#4}
- }
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}[aux]{\msg_use_code:}
-%\begin{macro}[aux]{\msg_use_loop:}
-% Blank definitions are initially created for these functions.
-% \begin{macrocode}
-\cs_new_nopar:Npn \msg_use_code: { }
-\cs_new:Npn \msg_use_loop:n #1 { }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}[aux]{\msg_use_aux:nnn}
-% The first auxiliary macro looks for a match by name: the most
-% restrictive check.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_use_aux:nnn #1#2#3 {
- \tl_set:Nn \l_msg_current_class_tl {#1}
- \tl_set:Nn \l_msg_current_module_tl {#2}
- \prop_if_in:NnTF \l_msg_redirect_names_prop { // #2 / #3 / } {
- \msg_use_loop_check:nn { names } { // #2 / #3 / }
- }{
- \msg_use_aux:nn {#1} {#2}
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}[aux]{\msg_use_aux:nn}
-% The second function checks for general matches by module or for
-% all modules.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_use_aux:nn #1#2 {
- \prop_if_in:cnTF { l_msg_redirect_ #1 _prop } {#2} {
- \msg_use_loop_check:nn {#1} {#2}
- }{
- \prop_if_in:cnTF { l_msg_redirect_ #1 _prop } { * } {
- \msg_use_loop_check:nn {#1} { * }
- }{
- \msg_use_code:
- }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}[aux]{\msg_use_loop_check:nn}
-% When checking whether to loop, the same code is needed in a few
-% places.
-% \begin{macrocode}
-\cs_new_protected:Npn \msg_use_loop_check:nn #1#2 {
- \prop_get:cnN { l_msg_redirect_ #1 _prop } {#2} \l_msg_class_tl
- \tl_if_eq:NNTF \l_msg_current_class_tl \l_msg_class_tl {
- \msg_use_code:
- }{
- \msg_use_loop:n { \l_msg_class_tl }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\msg_fatal:nnxxxx}
-%\begin{macro}{\msg_fatal:nnxxx}
-%\begin{macro}{\msg_fatal:nnxx}
-%\begin{macro}{\msg_fatal:nnx}
-%\begin{macro}{\msg_fatal:nn}
-% For fatal errors, after the error message \TeX\ bails out.
-% \begin{macrocode}
-\msg_class_new:nn { fatal } {
- \msg_direct_interrupt:xxxxx
- { \msg_fatal_text:n {#1} : ~ "#2" }
- {
- \use:c { \c_msg_text_prefix_tl #1 / #2 :xxxx } {#3} {#4} {#5} {#6}
- }
- {}
- { \msg_see_documentation_text:n {#1} }
- { \c_msg_fatal_text_tl }
- \tex_end:D
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_error:nnxxxx}
-%\begin{macro}{\msg_error:nnxxx}
-%\begin{macro}{\msg_error:nnxx}
-%\begin{macro}{\msg_error:nnx}
-%\begin{macro}{\msg_error:nn}
-% For an error, the interrupt routine is called, then any recovery code
-% is tried.
-% \begin{macrocode}
-\msg_class_new:nn { error } {
- \msg_direct_interrupt:xxxxx
- { #1~ \c_msg_error_tl : ~ "#2" }
- {
- \use:c { \c_msg_text_prefix_tl #1 / #2 :xxxx } {#3} {#4} {#5} {#6}
- }
- {}
- { \msg_see_documentation_text:n {#1} }
- {
- \cs_if_exist:cTF { \c_msg_more_text_prefix_tl #1 / #2 :xxxx }
- {
- \use:c { \c_msg_more_text_prefix_tl #1 / #2 :xxxx }
- {#3} {#4} {#5} {#6}
- }
- { \c_msg_no_info_text_tl }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_warning:nnxxxx}
-%\begin{macro}{\msg_warning:nnxxx}
-%\begin{macro}{\msg_warning:nnxx}
-%\begin{macro}{\msg_warning:nnx}
-%\begin{macro}{\msg_warning:nn}
-% Warnings are printed to the terminal.
-% \begin{macrocode}
-\msg_class_new:nn { warning } {
- \msg_direct_term:xx {
- \c_space_tl #1 ~ \c_msg_warning_tl :~
- \use:c { \c_msg_text_prefix_tl #1 / #2 :xxxx } {#3} {#4} {#5} {#6}
- }
- { ( #1 ) \c_space_tl \c_space_tl }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_info:nnxxxx}
-%\begin{macro}{\msg_info:nnxxx}
-%\begin{macro}{\msg_info:nnxx}
-%\begin{macro}{\msg_info:nnx}
-%\begin{macro}{\msg_info:nn}
-% Information only goes into the log.
-% \begin{macrocode}
-\msg_class_new:nn { info } {
- \msg_direct_log:xx {
- \c_space_tl #1~\c_msg_info_tl :~
- \use:c { \c_msg_text_prefix_tl #1 / #2 :xxxx } {#3} {#4} {#5} {#6}
- }
- { ( #1 ) \c_space_tl \c_space_tl }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_log:nnxxxx}
-%\begin{macro}{\msg_log:nnxxx}
-%\begin{macro}{\msg_log:nnxx}
-%\begin{macro}{\msg_log:nnx}
-%\begin{macro}{\msg_log:nn}
-% ``Log'' data is very similar to information, but with no extras
-% added.
-% \begin{macrocode}
-\msg_class_new:nn { log } {
- \msg_direct_log:xx {
- \use:c { \c_msg_text_prefix_tl #1 / #2 :xxxx } {#3} {#4} {#5} {#6}
- }
- { }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_trace:nnxxxx}
-%\begin{macro}{\msg_trace:nnxxx}
-%\begin{macro}{\msg_trace:nnxx}
-%\begin{macro}{\msg_trace:nnx}
-%\begin{macro}{\msg_trace:nn}
-% Trace data is the same as log data, more or less
-% \begin{macrocode}
-\msg_class_new:nn { trace } {
- \msg_direct_log:xx {
- \use:c { \c_msg_text_prefix_tl #1 / #2 :xxxx } {#3} {#4} {#5} {#6}
- }
- { }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_none:nnxxxx}
-%\begin{macro}{\msg_none:nnxxx}
-%\begin{macro}{\msg_none:nnxx}
-%\begin{macro}{\msg_none:nnx}
-%\begin{macro}{\msg_none:nn}
-% The \texttt{none} message type is needed so that input can be gobbled.
-% \begin{macrocode}
-\msg_class_new:nn { none } { }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\subsection{Redirection functions}
-%
-%\begin{macro}{\msg_redirect_class:nn}
-% Converts class one into class two.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_redirect_class:nn #1#2 {
- \prop_put:cnn { l_msg_redirect_ #1 _prop } { * } {#2}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\msg_redirect_module:nnn}
-% For when all messages of a class should be altered for a given module.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_redirect_module:nnn #1#2#3 {
- \prop_put:cnn { l_msg_redirect_ #2 _prop } {#1} {#3}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\msg_redirect_name:nnn}
-% Named message will always use the given class.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_redirect_name:nnn #1#2#3 {
- \prop_put:Nnn \l_msg_redirect_names_prop { // #1 / #2 / } {#3}
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\subsection{Kernel-specific functions}
-%
-%\begin{macro}{\msg_kernel_new:nnnn}
-%\begin{macro}{\msg_kernel_new:nnn}
-%\begin{macro}{\msg_kernel_set:nnnn}
-%\begin{macro}{\msg_kernel_set:nnn}
-% The kernel needs some messages of its own. These are created using
-% pre-built functions. Two functions are provided: one more general
-% and one which only has the short text part.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_kernel_new:nnnn #1#2 {
- \msg_new:nnnn { LaTeX } { #1 / #2 }
-}
-\cs_new_protected_nopar:Npn \msg_kernel_new:nnn #1#2 {
- \msg_new:nnn { LaTeX } { #1 / #2 }
-}
-\cs_new_protected_nopar:Npn \msg_kernel_set:nnnn #1#2 {
- \msg_set:nnnn { LaTeX } { #1 / #2 }
-}
-\cs_new_protected_nopar:Npn \msg_kernel_set:nnn #1#2 {
- \msg_set:nnn { LaTeX } { #1 / #2 }
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}[aux]{\msg_kernel_classes_new:n}
-% Quickly make the fewer-arguments versions.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_kernel_classes_new:n #1 {
- \cs_new_protected:cpx { msg_kernel_ #1 :nnxxx } ##1##2##3##4##5
- {
- \exp_not:c { msg_kernel_ #1 :nnxxxx }
- {##1} {##2} {##3} {##4} {##5} { }
- }
- \cs_new_protected:cpx { msg_kernel_ #1 :nnxx } ##1##2##3##4
- {
- \exp_not:c { msg_kernel_ #1 :nnxxxx }
- {##1} {##2} {##3} {##4} { } { }
- }
- \cs_new_protected:cpx { msg_kernel_ #1 :nnx } ##1##2##3
- {
- \exp_not:c { msg_kernel_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { }
- }
- \cs_new_protected:cpx { msg_kernel_ #1 :nn } ##1##2
- {
- \exp_not:c { msg_kernel_ #1 :nnxxxx } {##1} {##2} { } { } { } { }
- }
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\msg_kernel_fatal:nnxxxx}
-%\begin{macro}{\msg_kernel_fatal:nnxxx}
-%\begin{macro}{\msg_kernel_fatal:nnxx}
-%\begin{macro}{\msg_kernel_fatal:nnx}
-%\begin{macro}{\msg_kernel_fatal:nn}
-% Fatal kernel errors cannot be re-defined.
-% \begin{macrocode}
-\cs_new_protected:Npn \msg_kernel_fatal:nnxxxx #1#2#3#4#5#6 {
- \msg_direct_interrupt:xxxxx
- { \msg_fatal_text:n {LaTeX} }
- {
- \use:c { \c_msg_text_prefix_tl LaTeX / #1 / #2 :xxxx }
- {#3} {#4} {#5} {#6}
- }
- {}
- { \msg_see_documentation_text:n {LaTeX3} }
- { \c_msg_fatal_text_tl }
- \tex_end:D
-}
-\msg_kernel_classes_new:n { fatal }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_kernel_error:nnxxxx}
-%\begin{macro}{\msg_kernel_error:nnxxx}
-%\begin{macro}{\msg_kernel_error:nnxx}
-%\begin{macro}{\msg_kernel_error:nnx}
-%\begin{macro}{\msg_kernel_error:nn}
-% Neither can kernel errors.
-% \begin{macrocode}
-\cs_new_protected:Npn \msg_kernel_error:nnxxxx #1#2#3#4#5#6 {
- \msg_direct_interrupt:xxxxx
- { LaTeX~\c_msg_error_tl \c_space_tl "#2" }
- {
- \use:c { \c_msg_text_prefix_tl LaTeX / #1 / #2 :xxxx }
- {#3} {#4} {#5} {#6}
- }
- {}
- { \msg_see_documentation_text:n {LaTeX3} }
- {
- \cs_if_exist:cTF
- { \c_msg_more_text_prefix_tl LaTeX / #1 / #2 :xxxx }
- {
- \use:c { \c_msg_more_text_prefix_tl LaTeX / #1 / #2 :xxxx }
- {#3} {#4} {#5} {#6}
- }
- { \c_msg_no_info_text_tl }
- }
-}
-\msg_kernel_classes_new:n { error }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-%\begin{macro}{\msg_kernel_warning:nnxxxx}
-%\begin{macro}{\msg_kernel_warning:nnxxx}
-%\begin{macro}{\msg_kernel_warning:nnxx}
-%\begin{macro}{\msg_kernel_warning:nnx}
-%\begin{macro}{\msg_kernel_warning:nn}
-%\begin{macro}{\msg_kernel_info:nnxxxx}
-%\begin{macro}{\msg_kernel_info:nnxxx}
-%\begin{macro}{\msg_kernel_info:nnxx}
-%\begin{macro}{\msg_kernel_info:nnx}
-%\begin{macro}{\msg_kernel_info:nn}
-% Life is much more simple for warnings and information messages, as
-% these are just short-cuts to the standard classes.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \msg_kernel_warning:nnxxxx #1#2 {
- \msg_warning:nnxxxx { LaTeX } { #1 / #2 }
-}
-\msg_kernel_classes_new:n { warning }
-\cs_new_protected_nopar:Npn \msg_kernel_info:nnxxxx #1#2 {
- \msg_info:nnxxxx { LaTeX } { #1 / #2 }
-}
-\msg_kernel_classes_new:n { info }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%\end{macro}
-%
-% Error messages needed to actually implement the message system
-% itself.
-% \begin{macrocode}
-\msg_kernel_new:nnnn { msg } { message-unknown }
- { Unknown~message~'#2'~for~module~'#1'.}
- {
- \c_msg_coding_error_text_tl
- LaTeX~was~asked~to~display~a~message~called~'#2'\\
- by~the~module~'#1'~module:~this~message~does~not~exist.
- \c_msg_return_text_tl
- }
-\msg_kernel_new:nnnn { msg } { message-class-unknown }
- { Unknown~message~class~'#1'. }
- {
- LaTeX~has~been~asked~to~redirect~messages~to~a~class~'#1':\\
- this~was~never~defined.
-
- \c_msg_return_text_tl
- }
-\msg_kernel_new:nnnn { msg } { redirect-loop }
- { Message~redirection~loop~for~message~class~'#1'. }
- {
- LaTeX~has~been~asked~to~redirect~messages~in~an~infinite~loop.\\
- The~original~message~here~has~been~lost.
- \c_msg_return_text_tl
- }
-% \end{macrocode}
-%
-%\begin{macro}{\msg_kernel_bug:x}
-% The \LaTeX\ coding bug error gets re-visited here.
-% \begin{macrocode}
-\cs_set_protected:Npn \msg_kernel_bug:x #1 {
- \msg_direct_interrupt:xxxxx
- { \c_msg_kernel_bug_text_tl }
- { #1 }
- {}
- { \msg_see_documentation_text:n {LaTeX3} }
- { \c_msg_kernel_bug_more_text_tl }
-}
-% \end{macrocode}
-%\end{macro}
-%
-% \begin{macrocode}
-%</initex|package>
-% \end{macrocode}
-%
-% \end{implementation}
-%
-% \PrintIndex