Получение форматирования и интервалов \section

Получение форматирования и интервалов \section

Я пытаюсь создать новую \sectionкоманду с немного другим форматированием текста. Хотя я могу понять, как это сделать с помощью пакета titlesec, я бы хотел избежать ручной вставки форматирования и интервалов.

До сих пор у меня есть

\titleclass{\customsec}{straight}[\section]
\newcounter{customsec}

\titleformat{\customsec}{\sffamily\normalsize\bfseries}{}{0em}{Custom text \thecustomsec:~}
\titlespacing*{\customsec}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}

В настоящее время я вручную вставил некоторые значения для шрифта, размера и т. д., но я хотел бы, чтобы это была точная копия форматирования для \section. Единственное изменение, которое мне нужно, это возможность изменить текст в заголовке раздела. Есть ли какие-либо команды, которые могут извлечь это для меня?

Или правильным способом будет просто обновить команду в той части текста, где мне нужен пользовательский раздел, а затем восстановить ее?

решение1

Я не знаю, как извлечь точный стиль из \sectionкоманды по умолчанию, но, похоже, titlesecона не предоставляет для этого возможности, а делать это вручную или автоматически было бы ненадежно.

Однако локальное изменение заголовка кажется достаточно простым, а с помощью группы TeX (это внутренний слой фигурных скобок) он автоматически возвращается к значению по умолчанию, когда мы закончим.

\documentclass{article}
\usepackage{titlesec}

\newcommand\customsec[1]{{%
    \titlelabel{Custom text \thetitle:~}%
    \section{#1}%
}}

\begin{document}
    \section{normal section}
    \customsec{custom section}
    \section{normal section}
    \customsec{custom section}
\end{document}

результат

РЕДАКТИРОВАТЬ: В более старой версии этой статьи были показаны две более сложные версии, которые либо вручную сбрасывали настройки \titlelabelдо значений по умолчанию, либо обращались к внутренним макросам LaTeX для сохранения и восстановления.

Связанный контент