![使用 tikz 创建部分“条”和“标记”](https://linux22.com/image/307079/%E4%BD%BF%E7%94%A8%20tikz%20%E5%88%9B%E5%BB%BA%E9%83%A8%E5%88%86%E2%80%9C%E6%9D%A1%E2%80%9D%E5%92%8C%E2%80%9C%E6%A0%87%E8%AE%B0%E2%80%9D.png)
根据此原始帖子包括节名称以及 mdframed(定理)标头中的编号,我正在使用 tikz 创建一系列条形图和标记(例如主题编号,概括,主题摘要), 因此:
经过无数个小时的开发和实验,我似乎已经达到了极限,并请求帮助完成此宏的开发。特别是,我需要更好地了解如何按照特定规格制作下方两三个部分栏。
我希望三个“标记”都采用常规字体,而节标题文本本身仍然强调(即粗体)。我已经为第二个节栏部分实现了这种效果。Nb Document 的默认罗马字体是Gill Sans Light(参见 lipsum par.),同时Gill Sans(常规)设置为
mainfont
。我希望节标题文本正确地左对齐,即作为普通文本和前两个节标题。
我知道我对新命令的定义
\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 left
trim
ssection
tsection
osection
sectionbar
@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: