
Hier ist 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}
Ich möchte, dass es so wird:1. ABCund nicht1. ABC (kein Leerzeichen zwischen der „1“ und dem „.“).
Es ist möglich? Und wenn es möglich ist, wie kann ich es tun?
Danke schön!
Antwort1
Das Makro enthält am Ende \sectionformat
ein . Sie können es ohne dieses neu definieren:\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}
Antwort2
Sie sollten Gruppenklammern auf ein Minimum reduzieren und .
entweder das Folgende hinzufügen \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}
oder wählen Sie aus numbers=withdot
, dass der Punkt zu allen Abschnittsebenen hinzugefügt werden soll:
\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}
Das Ergebnis beider Beispiele ist:
Hinweis: Sie sollten ein \autodot
„in“ nicht \sectionformat
mit einem fest codierten kombinieren .
(weder „in \autodot
“ noch „on“ \sectionlinesformat
, wenn es laut Spezifikation falsch platziert ist), weil dies zu zwei Punkten führen könnte.
Bitte schauen Sie sich dieKOMA-Script Handbuchfür den Standardwert \sectionformat
und die Bedeutung von numbers=withdot
, \sectionformat
und \autodot
.
BTW: Das \makeatother
in deinem Beispiel ist auch nicht notwendig und sollte entfernt werden (das habe ich auch getan).
Off-Topic: Sie sollten auch mögliche unerwünschte Leerzeichen durch Zeilenumbrüche nach }
oder {
und durch echte Leerzeichen in der Mitte des Codes vermeiden.
In einem Kommentar heißt es, dass dies nicht funktioniert mit 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}
Und
\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}
beides führt zu:
was für die Verwendung von RL richtig zu sein scheint.