使用 tikz 创建部分“条”和“标记”

使用 tikz 创建部分“条”和“标记”

根据此原始帖子包括节名称以及 mdframed(定理)标头中的编号,我正在使用 tikz 创建一系列条形图和标记(例如主题编号概括主题摘要), 因此:

部分标题栏,包括编号选项

经过无数个小时的开发和实验,我似乎已经达到了极限,并请求帮助完成此宏的开发。特别是,我需要更好地了解如何按照特定规格制作下方两三个部分栏。

  1. 我希望三个“标记”都采用常规字体,而节标题文本本身仍然强调(即粗体)。我已经为第二个节栏部分实现了这种效果。Nb Document 的默认罗马字体是Gill Sans Light(参见 lipsum par.),同时Gill Sans(常规)设置为mainfont

  2. 我希望节标题文本正确地左对齐,即作为普通文本和前两个节标题。

  3. 我知道我对新命令的定义\ssection很差\tsection。虽然它们能工作,但我怀疑我没有“恰当地”实现这一点——尽管我不确定为什么。


如果有人能更进一步,我理想情况下希望用标记反转部分栏,方法是将标记放在页面左侧,并带有部分标题文本flushright。当我尝试直接执行此操作时,通过将此命令插入命令\titleformat,它会以一种超出我能力范围的方式移动所有内容。也许还有其他使用 tikz(样式?)的方法会更有效。但也许这应该是一个单独问题的主题……?


接下来是 MWE。

注意:它包含几个选项(使用切换),允许使用手册选项(fh),其中所有章节标题均未编号,以及法语翻译选项(fr),两者均设置为false在本例中,这两个选项均设置为。我认识到,因此从技术上讲,这不是最低限度工作示例,但希望您能够纵容我,因为删除切换需要重新定义宏的积分元素。

感谢您给予的帮助和建议。

    \documentclass[a5paper, openany]{memoir}     

    \usepackage{fontspec}                           %   glurl.co/fs0
    \setmainfont[Ligatures=TeX]{Gill Sans}
    \setromanfont[Ligatures=TeX]{Gill Sans Light}

\setlrmarginsandblock{0.85in}{0.85in}{*}    

    \usepackage{lipsum}
    \usepackage{etoolbox}
            \newtoggle{fr}
            \newtoggle{fh}  
            \togglefalse{fr}            %   english     
            \togglefalse{fh}        %   module handbook

\usepackage[usenames,dvipsnames]{xcolor}        
            \definecolor    {bar}           {gray}{0.7}
            \definecolor    {marker}        {named}{black}

%   section bar headings defined, using tikz

\usepackage[explicit]{titlesec}         %   glurl.co/dFH
\usepackage{tikz}
\usetikzlibrary{shapes.misc}

\makeatletter
\let\currentsectiontitle\relax

\newcommand\sectionbar{
            \tikz[baseline,trim left=\trim,trim right=\trim] {
                \fill [\barfill] (2.25cm,-1ex) rectangle (\textwidth+3cm,2.5ex);
                \node [ fill=\markerfill, anchor= base east, rounded rectangle,
                        minimum height=3.5ex] at 
                (13.8cm,{\vertical+\vadjust}) {\sectionmarker};
                \node [ fill=\barfill, anchor= base east, rounded rectangle,
                        minimum height=3.5ex] at 
                (\markerinset,\vertical) {};
                    }}          

        \def\sectionmarker{}
        \def\barfill{bar}
        \def\markerfill{bar}

        \def\trim{2.8cm}
        \def\vertical{0.1435}
        \def\vadjust{0}
        \def\markerinset{2.6cm}

\iftoggle{fh}{
            \titleformat{name=\section,numberless}      %   http://glurl.co/e7H
                {\large\bfseries}{\sectionbar}
                {0.1cm}{\gdef\currentsectiontitle{#1}#1}    
                }{
            \iftoggle{fr}{      
        \def\@@topic{Th\`eme}       
                \def\@@summary{R\'esum\'e}
                \def\@@topicsummary{R\'esum\'e du Th\`eme}
                }{
                \def\@@topic{Topic}         
                \def\@@summary{Summary}
                \def\@@topicsummary{topic summary}
                 }

\newcommand\@sectionbar{
    \def\trim{3.5cm}
    \def\vadjust{-0.0875}
    \def\markerfill{marker}
    \sectionbar}

\newcommand\@topic{
    \def\sectionmarker{\color{white}{\space \@@topic \space \thesection}}
            \@sectionbar}

\newcommand\@summary{
        \def\sectionmarker{\color{white}{\@@summary}}
            \@sectionbar}

\newcommand\@topicsummary{
        \def\sectionmarker{\color{white}{\@@topicsummary}}
            \@sectionbar}

\newcommand\titlebar{\@ifstar\sectionbar\@topic}

\titleformat
    {\section}
    {\large}        %   \flushright, \raggedleft
    {\titlebar}
    {-0.68cm}
    {\bfseries\gdef\currentsectiontitle{#1}#1}

\renewcommand*  {\thesection}   {\arabic{section}}

\newcommand {\osection}[1]  {\section*{\sectionbar#1}}
\newcommand {\ssection}[1]  {\section*{\@summary#1}}    
\newcommand {\tsection}[1]  {\section*{\@topicsummary#1}}
    }%end-toggle
\makeatother


    \begin{document}

    \chapter{Title}
    \label{title}

    \osection{Terms used in this study}
    \label{termsusedinthisstudy}

    \section{First section}
    \label{firstsection}

    \tsection{Topic summarised}
    \label{topicsummarised}

    \ssection{Study 1 Summarised}
    \label{study1summarised}

\lipsum[1]

    \end{document}

答案1

我找到了一种实现所需结果的方法。trim right使用单独的标记进行定义至关重要,即使值与(即)trimright相同。这导致和中的节标题文本与中的节标题文本对齐。然后主要是分别定义和之间的替代值。trim lefttrimssectiontsectionosectionsectionbar@sectionbar

我将其合并\textnormal以消除标记文本的现有强调。我仍然想将标记字体更改为中等粗细字体,但我相信这只是进一步研究的问题,特别是因为我想要使用的字体已经定义为setmainfont(目前,setromanfont始终使用“轻量”版本的字体)。

产生的宏:

    \documentclass[a5paper, openany]{memoir}     

    \usepackage{fontspec}                           %   glurl.co/fs0
    \setmainfont[Ligatures=TeX]{Gill Sans}
    \setromanfont[Ligatures=TeX]{Gill Sans Light}

\setlrmarginsandblock{0.85in}{0.85in}{*}    

    \usepackage{lipsum}
    \usepackage{etoolbox}
            \newtoggle{fr}
            \newtoggle{fh}  
            \togglefalse{fr}        %   english     
            \togglefalse{fh}        %   module handbook

\usepackage[usenames,dvipsnames]{xcolor}        
            \definecolor    {bar}           {gray}{0.7}
            \definecolor    {marker}        {named}{black}

%   section bar headings defined, using tikz

\usepackage[explicit]{titlesec}         %   glurl.co/dFH
\usepackage{tikz}
\usetikzlibrary{shapes.misc}

\makeatletter
\let\currentsectiontitle\relax

\newcommand\sectionbar{
            \tikz[baseline,trim left=\trim,trim right=\trimright] {
                \fill [\barfill] (2.25cm,-1ex) rectangle (\textwidth+3cm,2.5ex);
                \node [fill=\markerfill, anchor= base east, rounded rectangle,
                        minimum height=3.5ex] at 
                (13.8cm,{\vertical+\vadjust}) {\sectionmarker};
                \node [fill=\barfill, anchor= base east, rounded rectangle,
                        minimum height=3.5ex] at 
                (\markerinset,\vertical) {};
                    }}          

        \def\sectionmarker{\null}
        \def\barfill{bar}
        \def\markerfill{bar}

        \def\trim{2.815cm}% inset unmarked bar
        \def\trimright{2.7cm}% inset header to match text
        \def\markerinset{2.6cm}
        \def\vertical{0.145}
        \def\vadjust{0}

\iftoggle{fh}{
            \titleformat{name=\section,numberless}  %   http://glurl.co/e7H
                {\large\bfseries}{\sectionbar}
                {0.1cm}{\gdef\currentsectiontitle{#1}#1}    
                }{
            \iftoggle{fr}{      
        \def\@@topic{Th\`eme}       
                \def\@@summary{R\'esum\'e}
                \def\@@topicsummary{R\'esum\'e du Th\`eme}
                }{
                \def\@@topic{Topic}         
                \def\@@summary{Summary}
                \def\@@topicsummary{topic summary}
                 }

\newcommand\@sectionbar{
    \def\trim{3.6cm}% inset marked bars
        \def\trimright{2.75cm}% inset marked headers to match text
        \def\markerinset{2.58cm}
        \def\vertical{0.13}
    \def\vadjust{-0.0875}
    \def\markerfill{marker}
    \sectionbar}

\newcommand\@topic{
    \def\sectionmarker{\color{white}{\space \@@topic \space \thesection}}
            \@sectionbar}

\newcommand\@summary{
        \def\sectionmarker{\color{white}{\@@summary}}
            \@sectionbar}

\newcommand\@topicsummary{
        \def\sectionmarker{\color{white}{\@@topicsummary}}
            \@sectionbar}

\titleformat
    {\section}
    {\large\bfseries}       %   \flushright, \raggedleft
    {\textnormal\@topic}
    {-0.01cm}
    {\gdef\currentsectiontitle{#1}#1}

\renewcommand*{\thesection}{\arabic{section}}

\def\markerfont{\usefont{main}{m}}   % use 'main' font?

\newcommand{
        \osection}[1]{
                \section*{\sectionbar#1}}
\newcommand{
        \ssection}[1]{
                \section*{\textnormal\@summary#1}}  
\newcommand{
        \tsection}[1]{
                \section*{\textnormal\@topicsummary#1}}
    }%end-toggle
\makeatother


    \begin{document}

    \chapter{Title}
    \label{title}

    \section{First section}
    \label{firstsection}

    \osection{Terms used in this study}
    \label{termsusedinthisstudy}

    \tsection{Topic summarised}
    \label{topicsummarised}

    \ssection{Study 1 Summarised}
    \label{study1summarised}

\lipsum[1]

    \end{document}

生成的pdf:

在此处输入图片描述

相关内容