% \iffalse meta-comment
%
% Copyright (C) 2006, 2009, 2011, 2014 Heiko Oberdiek
% Copyright (C) 2014-2021 
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX base system.
% -------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% 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.3c or later is part of all distributions of LaTeX
% version 2008 or later.
%
% This file has the LPPL maintenance status "maintained".
%
% 2006/06/02 v1.0: First version.
% 2009/09/25 v1.1: \usepackage disabled.
% 2011/07/01 v1.2: Fixes.
% 2014/02/30 v1.3:
%  * Update for LaTeX 2014/05/01.
%  * Fix for anchor positions of issue titles.
% 2014/05/15 v1.4:
%  * Updates for ltnews21.tex.
% 2014/11/14 v1.4a:
%  * LaTeX Project version
% 2015/02/16 v1.4b:
%  * Fix TOC issue
% 2020/01/30 v1.4b:
%  * Fix TOC issue more generally and add page numbers
% 2020/04/13 v1.4d:
%  * Use titletoc for partial toc'sa in the separate issues
% \fi

\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltnews.tex}%
  [2021/11/12 v1.4d Master file for ltnews*.tex (LaTeX Project)]

\providecommand*{\lastissue}{35}

\InputIfFileExists{ltnews-lastissue.cfg}{}{}


\ifx\pdfoutput\undefined
\let\pdfoutput\outputmode
\protected\def\pdfinfo{\pdfextension info }
\fi

\RequirePackage{ifpdf}
\ifpdf
  % overwrite nasty stuff of ltnews.cfg
  % (use of hyperref for this would also support other drivers)
  \pdfinfo{%
    /Title(LaTeX News)%
    /Subject(Issues 1--\lastissue)%
    /Author(The LaTeX Project)%
    /Creator(LaTeX)%
  }
  \newtoks\pdfinfo
\else
  \AtBeginDocument{%
    \hypersetup{%
      pdftitle={LaTeX News},%
      pdfsubject={Issues 1\textendash\lastissue},%
      pdfauthor={The LaTeX Project},%
      pdfcreator={LaTeX}%
    }%
  }%
\fi

\RequirePackage{lmodern}
\RequirePackage[T1]{fontenc}
\RequirePackage{hologo}
\RequirePackage{graphicx}

\documentclass{ltnews}

\RequirePackage{url,csquotes}
% 1.4d (JLB) also load the titletoc package
\RequirePackage{titletoc}

% \small already robust so better not ...
%\expandafter
%\DeclareRobustCommand\expandafter*\expandafter\small\expandafter{\small}

\RequirePackage{hyperref}
\hypersetup{colorlinks}
\RequirePackage{bookmark}
\RequirePackage{multicol}

\makeatletter
% 1.4d (JLB) Titletoc thinks \contentsline has three arguments
%            but it has 4 in our case
\def\ttl@gobblecontents#1#2#3#4{\ignorespaces}

\newcounter{issue}
\renewcommand*{\theissue}{%
  \ifnum\value{issue}<10 0\fi
  \number\value{issue}%
}


% show the page number on first page of issues:

\renewcommand{\ps@titlepage}{%
   \renewcommand{\@oddhead}{\hfill}%
   \renewcommand{\@evenhead}{\hfill}%
   \renewcommand{\@oddfoot}{\@indiciafont\@indicia\hfill --\thepage}%
   \renewcommand{\@evenfoot}{\@indiciafont\@indicia\hfill --\thepage}%
}

\newcommand*{\MonthJanuary}{01}
\newcommand*{\MonthFebruary}{02}
\newcommand*{\MonthMarch}{03}
\newcommand*{\MonthApril}{04}
\newcommand*{\MonthMay}{05}
\newcommand*{\MonthJune}{06}
\newcommand*{\MonthJuly}{07}
\newcommand*{\MonthAugust}{08}
\newcommand*{\MonthSeptember}{09}
\newcommand*{\MonthOctober}{10}
\newcommand*{\MonthNovember}{11}
\newcommand*{\MonthDecember}{12}
\newcommand*{\printissue}{%
  Issue %
  \texorpdfstring{\number\value{issue}}{\theissue}, %
  \texorpdfstring{\@month\space\@year}{\@year/\@nameuse{Month\@month}}%
}
\let\l@part\l@section
\let\l@section\l@subsection
\let\l@subsection\l@subsubsection
\let\l@subsubsection\l@paragraph
\let\l@paragraph\l@subparagraph

\newcommand*{\makefirsttitle}{%
  \twocolumn[{%
    \parbox[t][4\baselineskip]{\textwidth}{%
      \@titlefont\@title, Issues 1--\lastissue
    }%
  }]%
}

% table of contents with underlined links
\iffalse % disable if option colorlinks is used
\@ifpackagelater{hyperref}{2006/06/01}{%
  \newcommand*{\saved@tableofcontents}{}%
  \let\saved@tableofcontents\tableofcontents
  \renewcommand*{\tableofcontents}{%
    \begingroup
      \hypersetup{pdfborderstyle={/S/U/W 1}}%
      \saved@tableofcontents
    \endgroup
  }%
}{}
\fi

% -- provide command introduced in new release
%    so this typesets with an old format
\DeclareTextCommandDefault\textcommabelow[1]
  {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
   \hbox{\check@mathfonts\fontsize\ssf@size\z@
   \math@fontsfalse\selectfont,}\hidewidth}\egroup}
\DeclareTextCommandDefault\textcommaabove[1]{%
    \hmode@bgroup
    \ooalign{%
      \hidewidth
      \raise.7ex\hbox{%
        \check@mathfonts\fontsize\ssf@size\z@\math@fontsfalse\selectfont`%
      }%
     \hidewidth\crcr
     \null#1\crcr
    }%
    \egroup
  }

\ExplSyntaxOn
\newcommand \acro [1]
  { \textsc { \text_lowercase:n {#1} } }
\ExplSyntaxOff

\makeatother


\begin{document}

%%% Title and Table of Contents

\makefirsttitle
\pdfbookmark[0]{\contentsname}{toc}
% 1.4d(JLB) Now that titletoc is used we can limit the depth
%            of the main toc
\setcounter{tocdepth}{2}
\tableofcontents
\clearpage

%%% Issues

\begingroup
  \makeatletter
  \renewcommand*{\usepackage}[2][]{%
    \begingroup
      \def\x{#1|#2}%
      \def\y{T1|fontenc}%
      \ifx\x\y
      \else
        \def\y{|lmodern,url}%
        \ifx\x\y
        \else
          \def\y{|lmodern,url,hologo}%
          \ifx\x\y
          \else
            \def\y{|csquotes}%
            \ifx\x\y
            \else
              \def\y{|graphicx}%
              \ifx\x\y
              \else
                \def\y{|multicol}%
                \ifx\x\y
                \else
                  \def\y{|color}%
                  \ifx\x\y
                  \else
                    \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc
                  \fi
                \fi
              \fi
            \fi
          \fi
        \fi
      \fi
    \endgroup
  }%
  \renewcommand*{\documentclass}[2][]{%
    \setcounter{footnote}{0}%
    \gobbleopt
  }%
% 1.4d (JLB) Removed the extra lines that were written to the toc-files
  \newcommand*{\gobbleopt}[1][]{}%
  \let\org@twocolumn\twocolumn
  \renewcommand\NeedsTeXFormat[1]{\NeedsTeXFormatdate}%  ignore that inside
  \newcommand\NeedsTeXFormatdate[1][]{}%              %  inidividual issues
  \renewenvironment{document}{%
    \clearpage
% 1.4d (JLB) Normally |\ltn@tocend| shoud do nothing
    \let\ltn@tocend\relax
    \ifnum\@issue=20 %
      \addtocontents{toc}{%
        \protect\makeatletter
       }%
       \addtocontents{toc}{%
         \let\protect\saved@l@paragraph\protect\l@paragraph
       }%
       \addtocontents{toc}{%
         \let\protect\l@paragraph\protect\l@subsection
       }%
    \fi
    \ifnum\@issue >20\space
      \addtocontents{toc}{%
        \let\protect\l@paragraph\protect\saved@l@paragraph
      }%
      \def\toclevel@subsection{1}%
      \def\toclevel@subsubsection{2}%
      \renewcommand*{\tableofcontents}{%
        \section*{\contentsname}%
% 1.4d (JLB) Start the partial contents
        \startcontents[Issue\theissue]
% 1.4d (JLB) Show it
        \printcontents[Issue\theissue]{}{1}[3]{}
% 1.4d (JLB)and make sure that |\end{document}| stops it again.
        \gdef\ltn@tocend{\stopcontents[Issue\theissue]}
      }%
      \let\l@subsubsection\l@subsection
      \let\l@subsection\l@section
      \let\l@section\l@part
      \let\l@part\@gobbletwo
    \fi
    \def\twocolumn[{%
      \let\twocolumn\org@twocolumn
      \org@twocolumn[%
      {% because of optional argument of \twocolumn
        \pdfbookmark[0]{\printissue}{issue\theissue}%
      }%
      \begingroup
        \let\WriteBookmarks\relax
        \@firstofone{% inside opt. arg. of \twocolumn: protect "]"
          \renewcommand*{\Hy@writebookmark}[5]{}%
        }%
        \phantomsection
        \addcontentsline{toc}{part}{\printissue}%
      \endgroup
    }%
  }{%
% 1.4d (JLB) Adde |\ltn@tocend|
    \ltn@tocend
    \clearpage
  }%
  \makeatother
  \loop
  \ifnum\value{issue}<\lastissue
    \stepcounter{issue}%
    \input{ltnews\theissue}%
  \repeat
  \stepcounter{issue}%
  \makeatletter
  \IfFileExists{ltnews\theissue}{%
    \@latex@error{\jobname.tex is out of date,\MessageBreak
      there is `ltnews\theissue.tex'%
    }\@ehc
  }{}%
  \makeatother
\endgroup

\end{document}
