% \iffalse meta-comment % % Copyright (C) 2018 - 2021 by ChairX % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % \fi % %\iffalse %<*nchairx> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{nchairx} [2021/07/29 v1.0.0 First major release] % % %<*driver> \documentclass{ltxdoc} \usepackage[english,german,strings]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{nchairx} \usepackage{ifdraft} \usepackage{gitinfo2} \usepackage[linktoc=all]{hyperref} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{nchairx.dtx} \end{document} % %\fi % % \CheckSum{2012} % % \changes{v0.1}{2018/02/27}{Initial test} % \changes{v0.9}{2019/02/21}{First official release} % \changes{v1.0.0}{2021/07/29}{First major release} % % \GetFileInfo{nchairx.sty} % % \title{The \textsf{nChairX} package} % \author{ChairX \\ % \ifdraft{Last changes by \gitAuthorName{} on \gitAuthorDate \\ } % \ifdraft{Git revision of nchairx:} % \ifdraft{\texttt{\gitAbbrevHash{}} {\gitReferences{}} \\ } % \ifdraft{} % Version \fileversion{} (\filedate) \\ % \texttt{marvin.dippell@mathematik.uni-wuerzburg.com}} % % \maketitle % % \selectlanguage{english} % % \begin{abstract} % This is a part of the new nChairX package providing the famous % ChairX style. % \end{abstract} % % \setcounter{tocdepth}{2} % \tableofcontents % % \section{Introduction} % This package defines the New ChairX style. Based on previous % versions we provide a major clean-up with many additional features % and easier handling. The style file is a rather high-level style % file providing many standard environments needed in math, many % macros needed in differential geometry, algebra, and analysis and % some other useful tools. The style file includes several other % packages and sets various defaults. There is a companion package % called |chairxmath| which only defines the math-related macros but % avoids setting environments etc. % % % \section{Usage} % \label{sec:Usage} % % To use the package you have to include it as usual by % \begin{center} % \begin{tabular}[l]{p{0.8\textwidth}} % \verb|\usepackage{nchairx}| % \end{tabular} % \end{center} % and specify some options if needed. % % % \subsection{Package Options} % % \DescribeMacro{noMath} The math % macros of the |nchairx| package can be excluded with the option |noMath|. % This can be used if one does not need the math macros of |nchairx| and there occur % clashes with other packages or macros, but the environments and other settings of % |nchairx| are still desired. % % \subsection{Setting the Defaults} % \label{sec:SettingDefaults} % % \input{chairxDefaultsDoc.dtx} % % % \subsection{Supporting many Languages} % \label{sec:LanguageSupport} % % For the use of other languages than English (our default) the % options of the |babel| package are respected. The important keywords % of \textsf{nChairX} (essentially the names of the environments) will % then be translated accordingly. In order to enable this you have to % load |babel| with the additional language you intend to use, e.g. % \begin{center} % \begin{tabular}[l]{p{0.8\textwidth}} % \verb|\usepackage[german,strings]{babel}| % \end{tabular} % \end{center} % \emph{before} you load |nchairx|. % Currently, only German is supported beside English. Then you can % switch between the languages inside one document with % |\selectlanguage{language}| to get the correct names of the % keywords. When loading several languages it is always a good idea % to place an explicit |\selectlanguage{language}| at the beginning of % the document to set the stage correctly. Note that you have to use % the |strings| option for babel as well. % % % \subsection{Environments} % \label{sec:Environments} % % The \textsf{nChairX} package provides many predefined mathematical % environments like definitions, theorems etc. The styling is fairly % standard. The names of the environments are language sensitive based % on the |babel| package. % % \input{chairxEnvDoc.dtx} % % % \subsection{Logo Support} % \label{sec:LogoSupport} % % \input{chairxLogoDoc.dtx} % % % \section{The Math Macros} % % One of the main purposes of |nchairx| is to provide several (in % fact, many) new math macros needed in various situations: we have % support for many things in differential geometry, algebra, and % functional analysis. The math macros can be used independently of % the full |nchairx| package under the name |chairxmath|. However, % |nchairx| always includes the math macros. % % \subsection{The Handling of the Fonts} % \input{chairxmathFontsDoc.dtx} % % \subsection{New Delimiter Sizes} % \input{chairxmathDelimitersDoc.dtx} % % \subsection{Decoration} % \input{chairxmathDecorationDoc.dtx} % % \setlength{\parindent}{0pt} % % \subsection{General Mathematics Macros} % \input{chairxmathGeneralDoc.dtx} % % \subsection{Algebra} % \input{chairxmathAlgebraDoc.dtx} % % \subsection{Analysis} % \input{chairxmathAnalysisDoc.dtx} % % \subsection{Category Theory} % \input{chairxmathCategoryDoc.dtx} % % \subsection{Differential Geometry} % \input{chairxmathDiffgeoDoc.dtx} % % \subsection{Linear Algebra} % \input{chairxmathLinalgDoc.dtx} % % \subsection{Statistics} % \input{chairxmathStatisticsDoc.dtx} % % \subsection{Topology} % \input{chairxmathTopologyDoc.dtx} % % \section{Known Bugs and Conflicts} % % There are several conflicts possible since |nchairx| loads a number % of other packages, some with explicit options needed to obtain the % aspired functionality. In this case, it can not be avoided that the % packages is loaded via |nchairx|. % \begin{itemize} % \item The package |xkeyval| is loaded without options. This is % necessary for many reasons like internal processing of ifs etc. % \item The package |amsmath| and |amssymb| are loaded. This can % sometimes yield unexpected conflicts with packages overwriting % commands from these two packages. % \item We define a smiley symbol from the |wasysym| font. This gives % a conflict with the |wasysym| package. % \item We load the |tensor| package and overwrite the |\tensor| % command of that package. The original macro is available under % |\originaltensor| and as identical macro |\decorate|. % \item We load |ntheorem| with specified options. This is unavoidable % to have the correct behaviour of our environments. % \item The theorem lists from the |ntheorem| package seem to crash % with the |babel| names we use for the actual environments. A % workaround for this is e.g. % \begin{quote} % |\makeatletter \listtheorems{definitions} \makeatother| % \end{quote} % to get the list of definitions. % \end{itemize} % % \StopEventually{\PrintIndex \PrintChanges} % % % \section{Implementation} % \label{sec:Implementation} % % % \subsection{Processing the Options} % % Before including other packages we make sure that we can use % key-value pairs as options using |xkeyval| % % \begin{macrocode} \RequirePackage{xkeyval} % \end{macrocode} % % Before including other required packages we have to process the % options that might alter the options given to these packages. % % First we create ifs for later use. % % \begin{macrocode} \newif\if@loadmath \@loadmathtrue % \end{macrocode} % % Define option for excluding math macros % % \begin{macrocode} \DeclareOptionX[chairx]{noMath}{ \@loadmathfalse } % \end{macrocode} % % Process options for the style file % % \begin{macrocode} \ProcessOptionsX[chairx] % \end{macrocode} % % \subsection{Required Packages} % % After processing the options we can now load the other required % packages. The following packages are required for the correct usage % of |nchairx|. We include them with some mandatory options. % % We will need several things from |amsmath| and |amssymb|. % % \begin{macrocode} \RequirePackage{amsmath} \RequirePackage{amssymb} % \end{macrocode} % % The |suffix| package allows to define $*$-versions of macros. % % \begin{macrocode} \RequirePackage{suffix} % \end{macrocode} % % The |mathtools| package provides so many nice things to type-set % math. Always a good idea to include this. In particular, we will % need the |\DeclarePairedDelimiter| command a lot. % % \begin{macrocode} \RequirePackage{mathtools} % \end{macrocode} % % The |ntheorem| package is used to define math environments of % various type. We need this package with particular options to make % the proof environment work correctly. Note that the proof % environment of |ntheorem| places the end-of-proof in a much better % way than every other available option. % % \begin{macrocode} \RequirePackage[amsmath,thmmarks,hyperref]{ntheorem} % \end{macrocode} % % The |graphicx| package is useful for many things. We need it for our % logo support to include pdf-files % \begin{macrocode} \RequirePackage{graphicx} % \end{macrocode} % % The |enumitem| package is now used to generate the enumerated lists % of items for the math environments. This allows various fine-tuning % and additional functionality for referring to items in lists. % % \begin{macrocode} \RequirePackage{enumitem} % \end{macrocode} % % The |tensor| package is used to place symbols at all possible % positions around one central symbol % \begin{macrocode} \RequirePackage{tensor} % \end{macrocode} % % Some additional fonts and symbols from |stmaryrd|: we only load the % font and grab those symbols we actually need to keep things easy. % % \begin{macrocode} \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % \end{macrocode} % % Last we need |aliascnt| to allow the usage of |\autoref|. % % \begin{macrocode} \RequirePackage{aliascnt} % \end{macrocode} % % \subsection{The Handling of the Fonts} % \input{chairxmathFonts.dtx} % % % \subsection{Setting some Defaults} % \input{chairxDefaults.dtx} % % % \subsection{Environments} % \input{chairxEnv.dtx} % % % \subsection{Logo Support} % \input{chairxLogo.dtx} % % % \subsection{The Math Macros} % % Include the math macros in alphabetical order of the file names. % % \input{chairxmathDelimiters.dtx} % \input{chairxmathDecoration.dtx} % \input{chairxmathGeneral.dtx} % \input{chairxmathAlgebra.dtx} % \input{chairxmathAnalysis.dtx} % \input{chairxmathCategory.dtx} % \input{chairxmathDiffgeo.dtx} % \input{chairxmathLinalg.dtx} % \input{chairxmathStatistics.dtx} % \input{chairxmathTopology.dtx} % % \begin{macrocode} % \end{macrocode} % % \Finale \endinput