如何删除 KOMA-Script 章节标题中的空格

如何删除 KOMA-Script 章节标题中的空格

以下是 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} 

输出如下:
在此处输入图片描述

我希望它会是:1. 美国广播公司并不是1. ABC (“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} 

两个示例的结果都是:

O 1. ABC o

注意:您不应将\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} 

都会导致:

o הדג .1 O

这对于使用 RL 来说似乎是正确的。

相关内容