Как убрать пробел в названии раздела в KOMA-Script

Как убрать пробел в названии раздела в KOMA-Script

Вот МВЭ:

\documentclass{scrartcl}
\usepackage{adforn}


\renewcommand{\sectionlinesformat}[4]{%
        \ifstr{#1}{section}{%
               {\adforn{30} {#3}. {#4} \adforn{58}}
        }
    {{\hskip#2#3}{#4}}%
}\makeatother

\begin{document}

\section{ABC}

\end{document} 

Вывод такой:
введите описание изображения здесь

Я хочу, чтобы это было:1. Азбукаи не1. АБВ (без пробела между «1» и «.»).
Это возможно? И если возможно, как это сделать?

Спасибо!

решение1

Макрос \sectionformatсодержит \enskipв конце. Вы можете переопределить его без этого:

\documentclass{scrartcl}
\usepackage{adforn}

\def\sectionformat{\thesection\autodot}% \enskip
\renewcommand{\sectionlinesformat}[4]{%
        \ifstr{#1}{section}{%
               {\adforn{30} {#3}. {#4} \adforn{58}}
        }
    {{\hskip#2#3}{#4}}%
}\makeatother

\begin{document}

\section{ABC}

\end{document}

введите описание изображения здесь

решение2

Вам следует сократить групповые скобки до минимума и добавить .либо к \sectionformat:

\documentclass{scrartcl}
\usepackage{adforn}

\renewcommand*{\sectionformat}{\thesection.\enskip}% replaced \autodot by .
\renewcommand{\sectionlinesformat}[4]{%
  \ifstr{#1}{section}%
    {\adforn{30} #3#4 \adforn{58}}%
    {\hskip#2#3#4}%
}\makeatother

\begin{document}

\section{ABC}

\end{document} 

или выберите numbers=withdot, чтобы добавить точку ко всем уровням раздела:

\documentclass[numbers=enddot]{scrartcl}
\usepackage{adforn}

\renewcommand{\sectionlinesformat}[4]{%
  \ifstr{#1}{section}%
    {\adforn{30} #3#4 \adforn{58}}%
    {\hskip#2#3#4}%
}

\begin{document}

\section{ABC}

\end{document} 

Оба примера приводят к следующему:

О 1. АБВ о

Примечание: не следует объединять \autodotin \sectionformatс жестко закодированным .(ни in, \autodotни on \sectionlinesformat, где он не указан в спецификации), поскольку это может привести к появлению двух точек.

Пожалуйста, посмотрите наРуководство по KOMA-Scriptдля значения по умолчанию \sectionformatи значения numbers=withdot, \sectionformatи \autodot.

Кстати: \makeatotherв вашем примере также не нужен и его следует удалить (что я и сделал).

Не по теме: Вам также следует избегать возможных ложных пробелов в виде новых строк после }или {и настоящих пробелов в середине кода.


В комментариях утверждается, что это не работает с hebrew:

\documentclass[numbers=enddot]{scrartcl}
\usepackage{polyglossia}
\setmainlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{David CLM}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Miriam Mono CLM}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Simple CLM}
\usepackage{adforn}

\renewcommand{\sectionlinesformat}[4]{%
  \ifstr{#1}{section}%
    {\adforn{30} #3#4 \adforn{58}}%
    {\hskip#2#3#4}%
}

\begin{document}

\section{גדה}

\end{document} 

и

\documentclass{scrartcl}
\usepackage{polyglossia}
\setmainlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{David CLM}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Miriam Mono CLM}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Simple CLM}
\usepackage{adforn}

\renewcommand*{\sectionformat}{\thesection.\enskip}% replaced \autodot by .
\renewcommand{\sectionlinesformat}[4]{%
  \ifstr{#1}{section}%
    {\adforn{30} #3#4 \adforn{58}}%
    {\hskip#2#3#4}%
}

\begin{document}

\section{גדה}

\end{document} 

оба результата:

о הדג .1 О

что, по-видимому, является правильным для использования RL.

Связанный контент