我试图重现一些tcolorbox
– 盒子。现在考虑以下 MWE:
\documentclass[12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{tikz,lipsum,libertine,microtype,colortbl,tcolorbox,amsmath,amssymb,amsfonts}
\usetikzlibrary{backgrounds}
\usepackage[explicit]{titlesec}
\newcommand{\changefont}[3]{\fontfamily{#1}\fontseries{#2}\fontshape{#3}\selectfont}
\everymath{\displaystyle}
%\titleformat{\chapter}[display]
%{\normalfont\huge\bfseries}{\filcenter\underline{\MakeUppercase{\textls[400]{\chaptertitlename}}\ \thechapter}}{20pt}{\Huge}
%\titleformat{\chapter}[display]
%{\normalfont\huge\bfseries}{\fcolorbox{red}{orange}{#1}\thechapter\hspace{1.5ex}\chaptertitlename}{20pt}{\Huge}
%\titleformat{\chapter}[display]
%{\normalfont\huge\bfseries}{
% \begin{tcolorbox}[colframe=blue!20,colback=blue!20,skin=widget,height=3cm]
% \vspace{2cm}
% \hfill\color{red}#1
% \end{tcolorbox}
%}{-10pt}{\Huge}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{
\begin{tikzpicture}
\node[fill=blue!20,minimum width=\textwidth,minimum height=2cm] (a) {};
\node[above left] at (a.south east) {\bf\textsf{#1}};
\node[gray] at (a.north east) {\scalebox{2}{\changefont{pnc}{m}{sl}\thechapter}};
\end{tikzpicture}
}{-40pt}{\Huge}
\begin{document}
\chapter{Einleitung}
\lipsum[1]\par
Hallo, hier steht ein Blindtext. \marginpar{\it Tipp: Versuch es selber zu lösen, dadurch lernst du mehr.} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.
\vspace{1cm}
\begin{table}[h!]
\centering
\rowcolors{1}{blue!20}{blue!10}
\begin{tabular}{>{\sf}r >{\sf}l}
\rowcolor{blue!30}
\normalfont\textbf{Meine Arbeit} & \normalfont\textbf{Deine Arbeit} \\
Einkauf & heute \\
Zeichnung & morgen \\
Arbeit & gestern \\
Hier und da & Jetzt da und dort
\end{tabular}
\caption{Beispiel einer Einkaufsliste}
\end{table}
\thispagestyle{empty}\newpage
\lipsum[1] Hier ist es wichtig \marginpar{\it Mit der Zeit tut man sich leichter \ldots} \lipsum[1]
\vspace{1ex}\noindent\begin{tikzpicture}
\node[rounded corners=1ex,
draw=blue,
very thick,
minimum height=2cm,
minimum width=\textwidth,
text width=\textwidth, %%% comment this line
align=left,
] (a) {He she it -- das 's' muss mit.};
\begin{pgfonlayer}{background}
\fill[blue!20] ([yshift=-1ex]a.north east) arc(0:90:1ex) -- ([xshift=1ex]a.north west) arc(90:180:1ex) -- ([yshift=1ex]a.south west) arc(180:270:1ex) -- ([xshift=-1ex]a.south east) arc(270:360:1ex) -- cycle;
\fill[blue] ([yshift=-1ex]a.north west) arc(-180:-270:1ex) -- ([xshift=-1ex]a.north east) arc(-270:-360:1ex) -- ([yshift=1.5cm]a.south east) -- ([yshift=1.5cm]a.south west) -- cycle;
\end{pgfonlayer}
\node[anchor=west,below right,white] at (a.north west) {\bf Die Merkregel};
\end{tikzpicture}\vspace{1ex}
%%% See the text indent …
% \begin{tikzpicture}[remember picture,overlay]
% \draw[ultra thick,red] ([xshift=-3.1cm]current page.south east) -- ([xshift=-3.1cm]current page.north east);
% \end{tikzpicture}
\begin{tcolorbox}
He she it -- das 's' muss mit.
\end{tcolorbox}
\end{document}
输出如下:
(我们正在讨论我创建的蓝色框;它位于输出的第二页.pdf
。)
当您注释掉标记的行 ( %%% comment this line
) 时,宽度与文本完美匹配。但是当您取消注释该行时,宽度不再匹配。所以我的问题是:我该如何修复这个错误?具体来说,我该如何将节点文本左对齐,并使节点的宽度与文本匹配?
答案1
为什么不使用tcolorbox
来完成这项任务?您正在用另一种方式,试图用 来tcolorbox
模仿tikzpicture
。
\documentclass[12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{tikz,lipsum,libertine,microtype,colortbl,tcolorbox,amsmath,amssymb,amsfonts}
\usetikzlibrary{backgrounds}
\usepackage[explicit]{titlesec}
\newcommand{\changefont}[3]{\fontfamily{#1}\fontseries{#2}\fontshape{#3}\selectfont}
\everymath{\displaystyle}
%\titleformat{\chapter}[display]
%{\normalfont\huge\bfseries}{\filcenter\underline{\MakeUppercase{\textls[400]{\chaptertitlename}}\ \thechapter}}{20pt}{\Huge}
%\titleformat{\chapter}[display]
%{\normalfont\huge\bfseries}{\fcolorbox{red}{orange}{#1}\thechapter\hspace{1.5ex}\chaptertitlename}{20pt}{\Huge}
%\titleformat{\chapter}[display]
%{\normalfont\huge\bfseries}{
% \begin{tcolorbox}[colframe=blue!20,colback=blue!20,skin=widget,height=3cm]
% \vspace{2cm}
% \hfill\color{red}#1
% \end{tcolorbox}
%}{-10pt}{\Huge}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{
\begin{tikzpicture}
\node[fill=blue!20,minimum width=\textwidth,minimum height=2cm] (a) {};
\node[above left] at (a.south east) {\bf\textsf{#1}};
\node[gray] at (a.north east) {\scalebox{2}{\changefont{pnc}{m}{sl}\thechapter}};
\end{tikzpicture}
}{-40pt}{\Huge}
\begin{document}
\chapter{Einleitung}
\lipsum[1]\par
Hallo, hier steht ein Blindtext. \marginpar{\it Tipp: Versuch es selber zu lösen, dadurch lernst du mehr.} Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.
\vspace{1cm}
\begin{table}[h!]
\centering
\rowcolors{1}{blue!20}{blue!10}
\begin{tabular}{>{\sf}r >{\sf}l}
\rowcolor{blue!30}
\normalfont\textbf{Meine Arbeit} & \normalfont\textbf{Deine Arbeit} \\
Einkauf & heute \\
Zeichnung & morgen \\
Arbeit & gestern \\
Hier und da & Jetzt da und dort
\end{tabular}
\caption{Beispiel einer Einkaufsliste}
\end{table}
\thispagestyle{empty}\newpage
\lipsum[1] Hier ist es wichtig \marginpar{\it Mit der Zeit tut man sich leichter \ldots} \lipsum[1]
% \vspace{1ex}\noindent\begin{tikzpicture}
% \node[rounded corners=1ex,
% draw=blue,
% very thick,
% minimum height=2cm,
% minimum width=\textwidth,
% text width=\textwidth, %%% comment this line
% align=left,
% ] (a) {He she it -- das 's' muss mit.};
% \begin{pgfonlayer}{background}
% \fill[blue!20] ([yshift=-1ex]a.north east) arc(0:90:1ex) -- ([xshift=1ex]a.north west) arc(90:180:1ex) -- ([yshift=1ex]a.south west) arc(180:270:1ex) -- ([xshift=-1ex]a.south east) arc(270:360:1ex) -- cycle;
% \fill[blue] ([yshift=-1ex]a.north west) arc(-180:-270:1ex) -- ([xshift=-1ex]a.north east) arc(-270:-360:1ex) -- ([yshift=1.5cm]a.south east) -- ([yshift=1.5cm]a.south west) -- cycle;
% \end{pgfonlayer}
% \node[anchor=west,below right,white] at (a.north west) {\bf Die Merkregel};
% \end{tikzpicture}\vspace{1ex}
%%% See the text indent …
% \begin{tikzpicture}[remember picture,overlay]
% \draw[ultra thick,red] ([xshift=-3.1cm]current page.south east) -- ([xshift=-3.1cm]current page.north east);
% \end{tikzpicture}
\begin{tcolorbox}[
title=Die Merkregel,
fonttitle=\bfseries,
coltitle=white,
colframe=blue,
colback=blue!20
]
He she it -- das 's' muss mit.
\end{tcolorbox}
\begin{tcolorbox}
He she it -- das 's' muss mit.
\end{tcolorbox}
\end{document}