Como remover espaço no título da seção no KOMA-Script

Como remover espaço no título da seção no KOMA-Script

Aqui está o MWE:

\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} 

A saída é esta:
insira a descrição da imagem aqui

Eu quero que seja:1. ABCe não1. abc (sem espaço entre "1" e ".").
É possível? e se for possível, como posso fazer isso?

Obrigado!

Responder1

A macro \sectionformatcontém um \enskipno final. Você pode redefini-lo sem isso:

\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}

insira a descrição da imagem aqui

Responder2

Você deve reduzir as chaves de grupo ao mínimo e adicionar .ao \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} 

ou selecione numbers=withdotpara adicionar o ponto a todos os níveis de seção:

\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} 

Ambos os exemplos resultam em:

O 1. ABC o

Nota: Você não deve combinar um \autodotin \sectionformatcom um hard coded .(nem dentro \autodotnem \sectionlinesformatonde ele está mal colocado por especificação), pois isso pode resultar em dois pontos.

Por favor, dê uma olhada noManual KOMA-Scriptpara o padrão \sectionformate o significado numbers=withdotde \sectionformate \autodot.

BTW: O \makeatotherno seu exemplo também não é necessário e deve ser removido (foi o que fiz).

Fora do tópico: você também deve evitar possíveis espaços em branco falsos por novas linhas após }ou {por espaços reais no meio do código.


Como um comentário afirma que isso não funciona com 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} 

e

\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} 

ambos resultam em:

o הדג .1 O

que parece estar correto para usar RL.

informação relacionada