目标模型

目标模型

在 Werner 的帮助下,我成功创建了一个自定义切片命令这里并且——关于可选参数——这个解决方案这里

是否可以使用 tikz 功能增强分段命令的宏?我想引用标题本身的角落,并考虑将其包装在节点命令中。嗯,值得一试,但也许 tikz 不是合适的工具,或者我只是缺乏对 LaTeX 的深入了解?

关于模型图片,我想

  1. 删除 tikz 线水平部分上方的空间(位于 section-command 上方,即空间用蓝色标记)和

  2. 让垂直 tikz 线到达标题的下角(tikz 线的红色部分,即紧挨着标题本身)。

这两点可能吗?

在帮助/提示下马丁,我设法创建了我想要的版本,但它显然还没有完全发挥作用(它会产生错误)并且看起来不像它应该的那样。

目标模型

在此处输入图片描述

MWE 的屏幕截图(不起作用)

在此处输入图片描述

平均能量损失

\documentclass[
11pt,
a4paper,
parskip=false-
]
{scrartcl}

\usepackage{
lmodern,
blindtext,
multicol,
tikz,
etoolbox
}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}


\RedeclareSectionCommands[
    beforeskip=0pt,
    afterskip=3pt,
    tocentryformat=\small,
    toclinefill=\small\TOCLineLeaderFill,
    tocpagenumberformat=\small,
%   addtokomafont=\Large
]{subsection}
\addtokomafont{subsection}{\Large}

%=================================
% hide section headings - circumvent with fake heading
%src: https://tex.stackexchange.com/a/129985/25683
%=================================
\newcommand{\myownsec}[1]{%
  \par\refstepcounter{section}% Increase section counter
  \sectionmark{#1}% Add section mark (header)
%  \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}% Add section to ToC
  \addcontentsline{toc}{section}{#1}% Add section to ToC
  % Add more content here, if needed.
}

%***********************************************************
%***********************************************************
%       OLD version - works, but does not look the part
% (src: https://tex.stackexchange.com/a/586911/25683)
%***********************************************************
%***********************************************************
%\NewDocumentCommand{\specialthing}{ o m }{%
%%\par\vspace{0ex}
%\begin{tikzpicture}
%[
%overlay,
%]
%\draw[
%semithick,
%color={black!30!blue},
%] (0,0) -- (0.95\columnwidth,0) -- (0.95\columnwidth,-0.5);
%\draw[
%semithick,
%color={black!50!green}
%] (0.1,-0.1) -- (0.94\columnwidth,-0.1) -- (0.94\columnwidth,-0.4);
%\end{tikzpicture}\par\vspace{0ex}
%\subsection[\IfValueTF{#1}{#1}{#2}]{#2}
%}

%***********************************************************
%***********************************************************
%  NEW version - does not work, would probably look like it should
%***********************************************************
%***********************************************************
\newrobustcmd{\specialthing}[1]{%
    \texorpdfstring{%
        \begin{tikzpicture}
            \node (sectionnode) {#1};
            \draw[orange] (sectionnode.north west) -- (sectionnode.north east) -- (sectionnode.south east);
        \end{tikzpicture}}{8iohsdfg}}

%\DeclareRobustCommand{\specialthing}{\texorpdfstring{\tikz\node{pgf};}{replacement text}}

%\chapter{hello \TikzStuff}

%\usepackage[showframe]{geometry}

\listfiles
\begin{document}
\begin{multicols*}{2}

\myownsec{Word}
%\tikz\node{pgf};\\

\subsection{bla \specialthing{asdf}}
\blindtext[1]

\blindtext[1]

\blindtext[1]

\blindtext[1]

%\specialthing{AAAAAA aaaa bbbb cccc dd eeeee}
\blindtext[1]

\end{multicols*}
\end{document}

答案1

据我所知并在以下人员的帮助下:

  1. https://tex.stackexchange.com/a/249111/25683

  2. https://tex.stackexchange.com/a/11570/25683- 我使用这个回复来估计的水平长度(即宽度)\thesection加上它后面的水平空间,即在标题文本本身之前结束的空间)。它似乎大约落在1.1em。 =>小心如果分段数高于 9(即至少在 2 位数字范围内),则使用此长度的代码部分会产生“丑陋”的结果(因为没有更好的术语)。此外,由于分段数是底部对齐的,我无法影响任何垂直偏移。

关于以下代码的说明:我在实际文档中不使用标题编号,但我也将解决方案应用于该用例。这就是为什么我对将此问题标记为已解决有些怀疑。我想我会将其搁置一周左右,希望你们中的一些人能提供一些提示。如果没有,那也没关系。:)

编辑 2021-03-17-2303 (CET)

secnumdepth > 0 的一个副作用是 TOC 条目很丑陋,因为 KOMA 不知何故没有将其 TOC 样式用于提供给分段命令的字符串。在下面的 MWE 中,这将是Heading with quite。这看起来很糟糕,这就是为什么我不应该也不会将此回复标记为我的问题的解决方案。

secnumdepth = 0 的屏幕截图

在此处输入图片描述

secnumdepth > 0 的屏幕截图

在此处输入图片描述

平均能量损失

因此,我目前正在使用的解决方案的对应和增强的 MWE 是:

\documentclass[
11pt,
a4paper,
parskip=false-
]
{scrartcl}

\usepackage{
lmodern,
blindtext,
tikz,
multicol,
etoolbox,
calc,
tikzpagenodes,
}

\usetikzlibrary{calc}

\usepackage[
pdfencoding=auto,
]{hyperref}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}


\RedeclareSectionCommands[
    beforeskip=0pt,
    afterskip=3pt,
    tocentryformat=\small,
    toclinefill=\small\TOCLineLeaderFill,
    tocpagenumberformat=\small,
%   addtokomafont=\Large
]{subsection}
\addtokomafont{subsection}{\Large}

%\setcounter{secnumdepth}{0}

%=================================
% hide section headings - circumvent with fake heading
%src: https://tex.stackexchange.com/a/129985/25683
%=================================
\newcommand{\myownsec}[1]{%
  \par\refstepcounter{section}% Increase section counter
  \sectionmark{#1}% Add section mark (header)
%  \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}% Add section to ToC
  \addcontentsline{toc}{section}{#1}% Add section to ToC
  % Add more content here, if needed.
}

%***********************************************************
%***********************************************************
%  NEW version
%***********************************************************
%***********************************************************
\newlength{\randomlength}

\newrobustcmd{\specialthing}[1]{%
\setlength{\randomlength}{\widthof{\thesection}}
\texorpdfstring{%
\begin{tikzpicture}
    \node[
        inner sep=0pt,
        outer sep=1pt,
        anchor=south west,
        align=left,
%       text width=\columnwidth, % <----- perfect if secnumdepth=0
        text width=\columnwidth-\randomlength-1.1em, % <------- this is preferrable if the counter secnumdepth is higher than 0 (or whichever number equals the sectioning depth of the commands you intend to use this tikz "add-on" with)
    ] (sectionnode) {#1};
    \draw[semithick, orange] ($(sectionnode.north west -| current page text area.west)+(-0.5\columnwidth,2pt)$) -- ($(sectionnode.north east)+(0,2pt)$) -- ($(sectionnode.south east)+(0,-2pt)$); % <------- this is preferrable if the counter secnumdepth is higher than 0 (or whichever number equals the sectioning depth of the commands you intend to use this tikz "add-on" with)
%   \draw[semithick, orange] ($(sectionnode.north west)+(0,2pt)$) -- ($(sectionnode.north east)+(0,2pt)$) -- ($(sectionnode.south east)+(0,-2pt)$); % <----- perfect if secnumdepth=0
\end{tikzpicture}}{#1}}


\usepackage[showframe]{geometry}

\listfiles
\begin{document}
\begin{multicols*}{2}

\myownsec{Word}

\section{\specialthing{Heading with quite}}

\subsection{Heading with words and such}

\section{\specialthing{And way more words in this heading}}

\blindtext[1]

\blindtext[1]

\blindtext[1]


\end{multicols*}
\end{document}

相关内容