I'm making a book with the koma-script (scrbook) class and I need to add a minitoc at the start of every part and chapter. I found a solution with this post, however it doesn't work with the greek language from babel.
Here is a minimal example:
\documentclass[fontsize=10pt,open=any,twocolumn]{scrbook}[2019/10/12]% needs version 3.27 or newer
\usepackage[greek]{babel}
\providecommand*{\Ifstr}{\ifstr}% added because of changes in upcoming KOMA-Script version 3.28 and \ifstr replaced by \Ifstr in the code (see https://komascript.de/faq_deprecatedif)
\usepackage{blindtext}
\usepackage{xcolor}
\usepackage{scrwfile}% avoid trouble with the limited number of write handles
\usepackage{xpatch}
\colorlet{partcolor}{blue}
\addtokomafont{partprefix}{\color{partcolor}}% change color of part prefix
\addtokomafont{part}{\normalcolor}% use normal color for part title
%\renewcommand*\partformat{\partname~\thepart}% if you want to remove \autodot from the definition
\RedeclareSectionCommand[
tocdynnumwidth=true,%
tocbeforeskip=1em,
tocindent=1.5em
]{part}
\RedeclareSectionCommand[
beforeskip=0pt,
afterindent=false,
afterskip=2\baselineskip,
tocdynnumwidth,
tocbeforeskip=1em plus 1pt minus 1pt,% add some glue
toclinefill=\TOCLineLeaderFill
]{chapter}
\RedeclareSectionCommand[
beforeskip=\baselineskip,
afterindent=false,
afterskip=.5\baselineskip,
tocindent=1.5em,
tocnumwidth=3.5em
]{section}
\RedeclareSectionCommand[
beforeskip=.75\baselineskip,
afterindent=false,
afterskip=.5\baselineskip,
tocindent=3.8em,
tocnumwidth=4em
]{subsection}
\RedeclareSectionCommand[
beforeskip=.5\baselineskip,
afterindent=false,
afterskip=.25\baselineskip,
tocindent=7em,
tocnumwidth=4.1em
]{subsubsection}
\RedeclareSectionCommand[
tocindent=10em,
tocnumwidth=5em
]{paragraph}
\RedeclareSectionCommand[
tocindent=12em,
tocnumwidth=6em
]{subparagraph}
\RedeclareSectionCommands
[tocpagenumberwidth=3em]
{part,chapter,section,subsection,paragraph,subparagraph}
% https://tex.stackexchange.com/a/359758
% https://tex.stackexchange.com/a/502077
\makeatletter
\newif\ifuseparttoc
\newcommand*{\parttoc}[1][\thepart]{% new command to generate and show a chapter toc
\useparttoctrue% switch on part-toc-entries
\edef\ext@parttoc{tcp#1}% extension of the part-toc-file, e.g., tcpI
\DeclareNewTOC[
listname=Obsah,
%unset=onecolumn% if the part toc should use twocolumn
]{\ext@parttoc}% declare a new toc file
\begingroup
\value{tocdepth}=\chaptertocdepth% we want entries down to chapter
\listoftoc{\ext@parttoc}% show the toc with header
\endgroup
}
\xapptocmd\addtocentrydefault{% patch the KOMA-Script's generic toc entry generator
\ifuseparttoc% if part toc entries should be generated
\expandafter\tocbasic@addxcontentsline\expandafter{\ext@parttoc}{#1}{#2}{#3}% do it
\fi
}{}{}
\xpretocmd\part{\useparttocfalse}{}{}% entries in part toc are automatically switched off at start of \part
\newif\ifusechaptertoc% Switch to tell \addtocentrydefault to not only make entries to the toc-file but also to the current section-toc-file
\newcommand*{\chaptertoc}[2][\thechapter]{% new command to generate and show a chapter toc
\usechaptertoctrue% switch on chapter-toc-entries
\edef\ext@chaptoc{tcc#1}% extension of the chapter-toc-file, e.g., tcc1
\DeclareNewTOC{\ext@chaptoc}% declare a new toc file
%\addsec*{Contents}% header of the chaptertoc
\setchapterpreamble{%
\begin{minipage}{\linewidth}
\hrulefill\par
\value{tocdepth}=\subsectiontocdepth% we want entries down to subsection
\listoftoc*{\ext@chaptoc}% show the toc without header
\end{minipage}%
\par\bigskip\nobreak\noindent\hrulefill\par
\bigskip\noindent\ignorespaces% add some vertical space after the toc and do not indent the following text
}%
}
\xapptocmd\addtocentrydefault{% patch the KOMA-Script's generic toc entry generator
\ifusechaptertoc% if chapter toc entries should be generated
\Ifstr{#1}{chapter}{}
{\expandafter\tocbasic@addxcontentsline\expandafter{\ext@chaptoc}{#1}{#2}{#3}}% do it
\fi
}{}{}
\xpretocmd\chapter{\usechaptertocfalse}{}{}% entries in chapter toc are automatically switched off at start of \chapter
\xpretocmd\part{\usechaptertocfalse}{}{}% entries in chapter toc are automatically switched off at start of \part
\makeatother
\newcommand\setchaptertoc[1][]{%
\Ifstr{#1}{}
{\AddtoOneTimeDoHook{heading/preinit/chapter}{\chaptertoc}}
{\AddtoOneTimeDoHook{heading/preinit/chapter}{\chaptertoc[#1]}}%
}
\setcounter{tocdepth}{\partnumdepth}% depth of TOC
\begin{document}
\tableofcontents
\setcounter{page}{3000}
\setcounter{chapter}{100}
\setcounter{part}{5080}
\part{Part I}
\parttoc
\setchaptertoc
\chapter{My chapter I}
\section{My first section}
\blindtext
\subsection{My first subsection}
\blindtext
\section{My second section}
\blindtext
\chapter{My chapter II}
\chapter{My chapter II}
\chapter{My chapter III}
\chapter{My chapter IV}
\chapter{My chapter V}
\chapter{My chapter VI}
\chapter{My chapter VII}
\chapter{My chapter VIII}
\chapter{My chapter IX}
\chapter{My chapter X}
\chapter{My chapter XI}
\chapter{My chapter XII}
\chapter{My chapter XIII}
\chapter{My chapter XIV}
\chapter{My chapter XV}
\chapter{My chapter XVI}
\chapter{My chapter XVII}
\chapter{My chapter XVIII}
\chapter{My chapter XIX}
\chapter{My chapter XX}
\chapter{My chapter XXI}
\chapter{My chapter XXII}
\chapter{My chapter XXIII}
\chapter{My chapter XXIV}
\chapter{My chapter XXVI}
\chapter{My chapter XXVII}
\chapter{My chapter XXVIII}
\chapter{My chapter XXIX}
\chapter{My chapter XXX}
\part{Part II}
\parttoc
\setchaptertoc
\chapter{My chapter I}
\section{My first section}
\blindtext
\subsection{My first subsection}
\blindtext
\section{My second section}
\blindtext:
\end{document}
This puts an error
! Incomplete \iffalse; all text was ignored after line 127.
<inserted text>
\fi
Using the polutonikogreek language instead of the greek language puts the same error. I suspect that this is related to the Ifstr\ifstr problem in KomaScript but when the greek language works in a complete book, it doesn't bear this minitoc approach? I need to write some sentences in greek, not the complete book.