記事のタイトル/セクション/サブセクションの書式設定

記事のタイトル/セクション/サブセクションの書式設定

簡単な問題に苦労しています。KOMAクラスを使用しています

\documentclass[11pt]{scrartcl}%

タイトルの見出しを次のようにフォーマットする必要があります。

  • セクションの見出しアラビア数字とドットで識別する必要があります (例: 1.、2. など)。太字のテキスト

ここに画像の説明を入力してください

  • サブ見出しアラビア数字の後にドットを付けて識別する必要があります(例:1.1、2.1)テキストは太字ではありません

ここに画像の説明を入力してください

  • サブサブ見出しアラビア数字の後にドットを付けて識別します。例: 1.1.1テキストを斜体で表示

ここに画像の説明を入力してください

すべてのセクションのタイトルでは、タイトル内のすべての主要な単語を大文字にする必要があります。例: “Hello Stackoverflow This Is Great”

ありがとう!!!!

答え1

すべてのセクション レベルにドットを追加する簡単な方法があります。

\usepackage[numbers=endperiod]{scrartcl}

しかし、実際にはセクションの最後にのみドットを付けたいので、次の操作を行う必要があります。

\documentclass[]{scrartcl}

\renewcommand*{\sectionformat}{\thesection.\enskip}

フォントを変更する簡単な方法があります:

\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}

タイトルケースを自動的に行う簡単な方法はありません。ただし、ここでの答えを適応させます。

titlecaps次のようにクラスでパッケージを使用することもできますscrartcl。自動タイトル ケースがなくても問題ない場合は (個人的には自分で行います)、コードのこの部分をすべて削除できます。完全な例を以下に示します。

もしこれをやりたいならシュヴァイネバッケの答え私が変更したコードよりも抽象度が 1 つ高いコードを変更するため、少し単純になります。

\documentclass[]{scrartcl}
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
\renewcommand*{\sectionformat}{\thesection.\enskip}
% The rest of this preamble code is only needed for automatic title casing
\usepackage{titlecaps}
% this is a space separated list of words that should be lowercase
% since you have to add to this list manually, title casing is not truly automatic
\Addlcwords{a an the that to this is are and with}
\makeatletter
% adapted from https://tex.stackexchange.com/a/33215/
% ---- only needed for automatic title case ----
\let\scr@section\section
\let\scr@subsection\subsection
\let\scr@subsubsection\subsubsection
\def\section{\@ifstar\cased@sections\cased@section}
\def\subsection{\@ifstar\cased@subsections\cased@subsection}
\def\subsubsection{\@ifstar\cased@subsubsections\cased@subsubsection}
\def\cased@sections#1{\scr@section*{\titlecap{#1}}}
\def\cased@subsections#1{\scr@subsection*{\titlecap{#1}}}
\def\cased@subsubsections#1{\scr@subsubsection*{\titlecap{#1}}}
\def\cased@section{\@dblarg{\cased@section@}}
\def\cased@subsection{\@dblarg{\cased@subsection@}}
\def\cased@subsubsection{\@dblarg{\cased@subsubsection@}}
\def\cased@section@[#1]#2{%
  \scr@section[\titlecap{#1}]{\titlecap{#2}}}
\def\cased@subsection@[#1]#2{%
  \scr@subsection[\titlecap{#1}]{\titlecap{#2}}}
\def\cased@subsubsection@[#1]#2{%
  \scr@subsubsection[\titlecap{#1}]{\titlecap{#2}}}
\makeatother
% ---- only needed for automatic titlecase ----

\begin{document}

\section{A section with a word that should use uppercase}
\subsection{This is a subsection with most words uppercase}
\subsubsection{This is a subsubsection}
\end{document}

コードの出力

答え2

適応してアランの素晴らしい答え見出しを自動的に大文字にするには、の\sectionlinesformat代わりにを再定義します。\section\subsection\subsubsection

\let\orig@sectionlinesformat\sectionlinesformat
\renewcommand*{\sectionlinesformat}[4]{%
  \orig@sectionlinesformat{#1}{#2}{#3}{\titlecap{#4}}%
}%

目次のエントリの大文字と小文字を変更するには、次のように再定義します\addtocentrydefault

\let\orig@addtocentrydefault\addtocentrydefault
\renewcommand*{\addtocentrydefault}[3]{%
  \orig@addtocentrydefault{#1}{#2}{\titlecap{#3}}%
}

見出しの大文字と小文字を変更するには、 を再定義します\MakeMarkcase

\let\MakeMarkcase\titlecap

MWE:

\documentclass[]{scrartcl}
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
\renewcommand*{\sectionformat}{\thesection.\enskip}
\renewcommand*{\sectionmarkformat}{\sectionformat}% also for running head
% The rest of this preamble code is only needed for automatic title casing
\usepackage{titlecaps}
% this is a space separated list of words that should be lowercase
% since you have to add to this list manually, title casing is not truly automatic
\Addlcwords{a an the that to this is are and with}
\makeatletter
\let\orig@sectionlinesformat\sectionlinesformat
\renewcommand*{\sectionlinesformat}[4]{%
  \orig@sectionlinesformat{#1}{#2}{#3}{\titlecap{#4}}%
}%
\let\orig@addtocentrydefault\addtocentrydefault
\renewcommand*{\addtocentrydefault}[3]{%
  \orig@addtocentrydefault{#1}{#2}{\titlecap{#3}}%
}
% and if you also want the case change for \paragraph and \subparagraph:
\let\orig@sectioncatchphraseformat\sectioncatchphraseformat
\renewcommand*{\sectioncatchphraseformat}[4]{%
  \orig@sectioncatchphraseformat{#1}{#2}{#3}{\titlecap{#4}}%
}
\makeatother
\let\MakeMarkcase\titlecap
% ---- only needed for automatic titlecase ----
\pagestyle{headings}% to show the running head
\begin{document}
\tableofcontents
\section{A section with a word that should use uppercase}
\subsection{This is a subsection with most words uppercase}
\subsubsection{This is a subsubsection}
\newpage
Empty page
\end{document}

しかし、汚いトリックが好きなら、次のこともできます。

\documentclass[]{scrartcl}
\setkomafont{subsection}{\normalfont}
\setkomafont{subsubsection}{\normalfont\itshape}
\renewcommand*{\sectionformat}{\thesection.\enskip}
\renewcommand*{\sectionmarkformat}{\sectionformat}% also for running head
% The rest of this preamble code is only needed for automatic title casing
\usepackage{titlecaps}
% this is a space separated list of words that should be lowercase
% since you have to add to this list manually, title casing is not truly automatic
\Addlcwords{a an the that to this is are and with}
\makeatletter
\let\orig@sectionlinesformat\sectionlinesformat
\renewcommand*{\sectionlinesformat}[4]{%
  \orig@sectionlinesformat{#1}{#2}{#3}{\titlecap{#4}}%
  \expandafter\gdef\expandafter\@currenttocentry\expandafter{%
    \expandafter\titlecap\expandafter{\@currenttocentry}%
  }%
  \expandafter\gdef\expandafter\@currentheadentry\expandafter{%
    \expandafter\titlecap\expandafter{\@currentheadentry}%
  }%
}%
\let\orig@sectioncatchphraseformat\sectioncatchphraseformat
\renewcommand*{\sectioncatchphraseformat}[4]{%
  \orig@sectioncatchphraseformat{#1}{#2}{#3}{\titlecap{#4}}%
  \expandafter\gdef\expandafter\@currentheadentry\expandafter{%
    \expandafter\titlecap\expandafter{\@currentheadentry}%
  }%
}
\makeatother
% ---- only needed for automatic titlecase ----
\pagestyle{headings}% to show the running head
\begin{document}
\tableofcontents
\section{A section with a word that should use uppercase}
\subsection{This is a subsection with most words uppercase}
\subsubsection{This is a subsubsection}
\newpage
Empty page
\end{document}

どちらの提案も結果は次のようになります:

ここに画像の説明を入力してください

キャッチフレーズコードは および\paragraphです\subparagraph

答え3

最終編集(本当に値しない賛成票が多すぎたため、回答を編集する必要がありました)

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{nameref}
\usepackage{mfirstuc}
\MFUnocap{$f(x)=2\cdot x$}

\renewcommand{\sectionformat}{}
\renewcommand{\subsectionformat}{}
\renewcommand{\subsubsectionformat}{}

\renewcommand*\sectionformat{\normalfont\bfseries\Large}
\renewcommand*\subsectionformat{\normalfont\mdseries\rmfamily\large}
\renewcommand*\subsubsectionformat{\normalfont\itshape\large}



\let\oldsection\section
\makeatletter
\def\section{%
\@ifstar{\@Starred}{\@nonStarred}%
}
\def\@Starred{%
\setkomafont{section}{\sectionformat}%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWith}%
{\@StarredWithout}%
}      
\def\@StarredWith[#1]#2{%
\oldsection*{\capitalisewords{#2}}%
}
\def\@StarredWithout#1{%% This would be simpler if your table of contents is not a section... 
\ifnum\pdfstrcmp{#1}{\contentsname}=0%
    \renewcommand{\sectionformat}{}%
    \setkomafont{section}{\sectionformat}%
    \oldsection*{\contentsname}%
\else%
    \oldsection*{\capitalisewords{#1}}%
 \fi%
}
\def\@nonStarred{%
\setkomafont{section}{\sectionformat\thesection.\space}%
\@ifnextchar[%
{\@nonStarredWith}%
{\@nonStarredWithout}%
}
\def\@nonStarredWith[#1]#2{%
\oldsection[#1]{\capitalisewords{#2}}%
}
\def\@nonStarredWithout#1{%
\oldsection{\capitalisewords{#1}}%
}
\makeatother


\let\oldsubsection\subsection
\makeatletter
\def\subsection{%
\@ifstar{\@Starredss}{\@nonStarredss}%
}
\def\@Starredss{%
\setkomafont{subsection}{\subsectionformat}%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWithss}%
{\@StarredWithout}%
}      
\def\@StarredWithss[#1]#2{%
\oldsubsection*{\capitalisewords{#2}}%
}
\def\@StarredWithoutss#1{%% This would be simpler if your table of contents is not a subsection... 
\ifnum\pdfstrcmp{#1}{\contentsname}=0%
    \renewcommand{\sectionformat}{}%
    \setkomafont{subsection}{\sectionformat}%
    \oldsubsection*{\contentsname}%
\else%
    \oldsubsection*{\capitalisewords{#1}}%
 \fi%
}
\def\@nonStarredss{%
\setkomafont{subsection}{\subsectionformat\thesubsection\space}%
\@ifnextchar[%
{\@nonStarredWithss}%
{\@nonStarredWithoutss}%
}
\def\@nonStarredWithss[#1]#2{%
\oldsubsection[#1]{\capitalisewords{#2}}%
}
\def\@nonStarredWithoutss#1{%
\oldsubsection{\capitalisewords{#1}}%
}
\makeatother

\let\oldsubsubsection\subsubsection
\makeatletter
\def\subsubsection{%
\@ifstar{\@Starredsss}{\@nonStarredsss}%
}
\def\@Starredsss{%
\setkomafont{subsubsection}{\subsubsectionformat}%
\@ifnextchar[%
{\GenericWarning{}{Warning: A starred section can not have parameters. I am going to ignore them!}\@StarredWithsss}%
{\@StarredWithout}%
}      
\def\@StarredWithsss[#1]#2{%
\oldsubsubsection*{\capitalisewords{#2}}%
}
\def\@StarredWithoutsss#1{%% This would be simpler if your table of contents is not a subsection... 
\ifnum\pdfstrcmp{#1}{\contentsname}=0%
    \renewcommand{\sectionformat}{}%
    \setkomafont{subsection}{\sectionformat}%
    \oldsubsubsection*{\contentsname}%
\else%
    \oldsubsubsection*{\capitalisewords{#1}}%
 \fi%
}
\def\@nonStarredsss{%
\setkomafont{subsubsection}{\subsubsectionformat\thesubsubsection\space}%
\@ifnextchar[%
{\@nonStarredWithsss}%
{\@nonStarredWithoutsss}%
}
\def\@nonStarredWithsss[#1]#2{%
\oldsubsubsection[#1]{\capitalisewords{#2}}%
}
\def\@nonStarredWithoutsss#1{%
\oldsubsubsection{\capitalisewords{#1}}%
}
\makeatother

\begin{document}

\tableofcontents

\section{test section 1 with text of non-capitalized first word}

That was the first test section and here comes the second named ``\nameref{sec:secd}''



\section{the second section with equation $f(x)=2\cdot x$}\label{sec:secd}

\section*{a section with star}


\subsection{the first subsection}
And we can use very simple the nameref like this: ``\nameref{subsub}''
\subsubsection{a subsubsection}\label{subsub}

\end{document}

結果: ここに画像の説明を入力してください

編集: @AlanMunn が述べたように、私の方法はこのドキュメントクラスでは推奨されていないため、このドキュメントクラスを含めるように回答を更新します...他のドキュメントクラスを使用してこの質問に到達した人は、おそらくこの方法を簡単な方法として使用できます。

必要なものはすべて簡単に実行できます... コマンド MFUnocap で行ったように、大文字にしたくない方程式や単語を capitalize 関数から除外することを忘れないでください... そうしないと、エラーが発生します。

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{nameref}
\usepackage[explicit]{titlesec}
\usepackage{mfirstuc}
\MFUnocap{$f(x)=2\cdot x$}


\titleformat{\section}
  {\normalfont\Large\bfseries}{\thesection.}{1em}{\capitalisewords{#1}}
\titleformat{\subsection}
  {\normalfont\large}{\thesubsection}{1em}{\capitalisewords{#1}}
\titleformat{\subsubsection}
  {\normalfont\large\itshape}{\thesubsubsection}{1em}{\capitalisewords{#1}}


\begin{document}

\section{Test section 1 with text of non-capitalized first word}

That was the first test section and here comes the second named ``\nameref{sec:second}''

\section{the second section with equation $f(x)=2\cdot x$}\label{sec:second}

\subsection{the first subsection}

\subsubsection{a subsubsection}

\end{document}

また、nameref の使用法によっては、タイトルが実際のタイトルどおりに表示されないことにも注意してください。したがって、@MichaelPalmer の提案どおりに nameref を使用する場合は、タイトルを手動で修正する必要があります。

結果:

ここに画像の説明を入力してください

関連情報