所以我尝试制作下划线居中的标题:
居中的答案来了这里和这里。
现在我的问题是,我如何使它带下划线:\ul
它不起作用(文件无法编译,并且uline
我得到丑陋的下划线:
这是 MWE:
\documentclass{scrartcl}
\usepackage{fontspec,adforn,ulem,soul}
\makeatletter
\addtokomafont{section}{\centering}
\addtokomafont{subsection}{\centering}
\renewcommand{\sectionlinesformat}[4]{%
%\@tempswafalse
\ifstr{#1}{section}{%
{\@hangfrom{{{#3}{#4}\adforn{12}}}}
}
{\ifstr{#1}{subsection}{%
{\@hangfrom{\uline{{{#3}{#4}\adforn{24}}}}}%
}
{\@hangfrom{\hskip#2#3}{#4}}}%
}\makeatother
\begin{document}
\part{ABC}
\section{abc}
\subsection{abcd efgh abcd efgh iiii hhjjgghgg abcd efgh abcd efgh iiii hhjjgghgg abcd efgh abcd efgh iiii hhjjgghgg}
\end{document}
PS 对于部分我得到了答案这里但它也不起作用。
这里是关于使用\ul
或者\uline
.
如果我把parbox
这个放进去,我会得到:
相关内容如下:
{\ifstr{#1}{subsection}{%
{\@hangfrom{\uline{\parbox{\linewidth}{{#3}{#4}\adforn{24}}}}}%
}
您是否知道它如何工作并正常显示,并且文本可以有多于一行居中并带有下划线?
谢谢你!!
答案1
为了直观地了解您的案例中下划线的问题,请参见以下代码。它基于在我的回答中\ul{}
并使用来自包的命令下划线soul
。另请注意,您使用的内容\adforn{}
放在章节和小节的标题中:
\documentclass{scrartcl}
\usepackage{fontspec,adforn}
\usepackage{soul}
\begin{document}
\renewcommand\raggedsection{\centering}
\part{ABC}
\section{\ul{abc test test test test test test test test test test test test
test test test test test test test test test test test test test test
test test test test test test} \adforn{12}} % <=======================
\subsection{\ul{def} \adforn{24}} % <===================================
\section{\ul{abc test test test test test test test test test test test test
test test test test test test test test test test test test test test
test test test test test test \protect\adforn{12}}} % <===============
\end{document}
结果如下:
正如你所看到的\ul{...}
,\section
如果\adforn{}
不包括到\ul
(见上图中第一个红色圆圈)!
现在你可以尝试\adforn
加入\ul
\subsection{\ul{def \adforn{24}}}
导致 9 个错误。
正如您在上图中所看到的,您可以使用它\protect\adfarn
来进行编译而不会出现错误,但结果很难看(第二个红色圆圈)。
结论:
\adforn
您可以在不使用或的情况下使用居中下划线- 您可以使用
\adforn
居中但不带下划线
我建议省略下划线!
基于在这个答案中的第二个 MWE你可以做
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{adforn}
\usepackage{soul} % <===================================================
\renewcommand\raggedsection{\centering}
\let\originalsectionlinesformat\sectionlinesformat
\renewcommand{\sectionlinesformat}[4]{%
\originalsectionlinesformat{#1}{#2}{#3}{\ul{#4}% <====================
\ifstr{#1}{section}{\adforn{12}}
{\ifstr{#1}{subsection}{\adforn{24}}{}}%
}%
}
\usepackage{blindtext}% only for dummy text
\begin{document}
\section{abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc}
\blindtext
\subsection{def}
\blindtext
\end{document}
获取下划线标题\section
并且\subsection
不自动添加\adforn
符号。但请注意:这可能会导致难看的字体,取决于所用标题文本的内容……