![彩色下划线部分标题](https://linux22.com/image/315659/%E5%BD%A9%E8%89%B2%E4%B8%8B%E5%88%92%E7%BA%BF%E9%83%A8%E5%88%86%E6%A0%87%E9%A2%98.png)
我想使用不同的颜色为节标题加下划线(例如,红色表示节,黄色表示子节)。到目前为止,我只实现了更改标题的文本颜色(参见代码),但我想为标题加下划线,然后更改线条颜色,同时保持文本颜色为黑色。
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[colorlinks=true]{hyperref}
\addtokomafont{section}{\color{red}}
\addtokomafont{subsection}{\color{yellow}}
\begin{document}
\section{Section}
\subsection{Subsection}
\end{document}
附言:我不知道为什么代码示例需要\usepackage[colorlinks=true]{hyperref}
,但没有它就无法编译。
答案1
更新
自 KOMA-Script 版本 3.19 起,\sectionlinesformat
可以重新定义命令以使用包获得所需的结果ulem
:
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage[normalem]{ulem}
\usepackage{blindtext}
\makeatletter
\renewcommand{\sectionlinesformat}[4]{%
\ifstr{#1}{section}
{\colorlet{ulinecolor}{red}}
{\ifstr{#1}{subsection}{\colorlet{ulinecolor}{green}}
{\colorlet{ulinecolor}{.}}}%
\@hangfrom{\hskip #2\expandafter\sectionuline\expandafter{#3}}{\expandafter\sectionuline\expandafter{#4}}%
}
\makeatother
\newcommand\sectionuline{%
\bgroup\markoverwith{\textcolor{ulinecolor}{\rule[-0.75ex]{2pt}{0.4pt}}}%
\ULon%
}
\colorlet{ulinecolor}{black}
\addtokomafont{section}{\Huge}
\begin{document}
\section{Really long section title that needs more than one line}
\subsection{Subsection}
\subsubsection{Subsubsection}
\end{document}
结果是
原始答案
如果您只想为线条着色,您可以加载包ulem
并按照手册中的建议为彩色线条定义新命令:
\newcommand\sectionuline{%
\bgroup\markoverwith{\textcolor{red}{\rule[-0.5ex]{2pt}{0.4pt}}}%
\ULon%
}
\newcommand\subsectionuline{%
\bgroup\markoverwith{\textcolor{blue}{\rule[-0.5ex]{2pt}{0.4pt}}}%
\ULon%
}
然后,您可以通过以下方式将这些命令添加到字体设置中section
:subsection
\addtokomafont{section}{\sectionuline}
\addtokomafont{subsection}{\subsectionuline}
警告:\...uline
必须是最后添加到字体设置的命令,因为它们带有参数。此外,这些\...uline
命令是格式化命令,因此这有点像字体设置的误用。
代码:
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{ulem}
\newcommand\sectionuline{%
\bgroup\markoverwith{\textcolor{red}{\rule[-0.5ex]{2pt}{0.4pt}}}%
\ULon%
}
\newcommand\subsectionuline{%
\bgroup\markoverwith{\textcolor{blue}{\rule[-0.5ex]{2pt}{0.4pt}}}%
\ULon%
}
\addtokomafont{section}{\sectionuline}
\addtokomafont{subsection}{\subsectionuline}
\begin{document}
\section{Section}
\subsection{Subsection}
\end{document}
答案2
感谢大家的贡献。有一段时间,我一直在寻找一种最简单的(不使用 koma )方法来在不影响章节标题的情况下为节和小节加下划线,我找到了一些关于此的讨论,但我总是遇到麻烦并影响章节标题。最后,它对我有用,希望这对其他人有帮助……
\usepackage{titlesec}
\usepackage{xcolor}
\usepackage[normalem]{ulem}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries\centering\color{blue}}{\sc{\chaptertitlename\ \thechapter}}{20pt}{\Huge}
\titlespacing*{\chapter}
{15pt}
{15pt}
{50pt}
\titleformat{\section} {\normalfont\Large\bfseries\raggedright}{\thesection}{1em}{\uline}
\titleformat{\subsection}{\normalfont\large\bfseries\raggedright}{\thesubsection}{1em}{\uline}