У меня возникли проблемы с размещением субтитров \subfloat
при использовании tikzpicture.
Вот мой MWE:
\documentclass[a4paper,
11pt,
ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{caption}
\setkomafont{captionlabel}{\small\bfseries}
\setkomafont{caption}{\small}
\setcapindent{0em}
\setcapwidth{0.9\textwidth}
\captionsetup[subfigure]{font={footnotesize},labelfont={bf,footnotesize}}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}
\begin{document}
\tikzset{
momentum/.style={postaction={decorate},
decoration={markings, mark=at position 1 with {\arrow[scale=0.8]{>}}}},
}
\begin{figure}[tb]
\subfloat[Winkel zwischen 1 und 3 am kleinsten]{
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\centering
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){2};
\draw[momentum](5,5)--(4,9);
\node[anchor=east]at(4,9){1};
\draw[momentum](5,5)--(6,9);
\node[anchor=west]at(6,9){3};
\end{tikzpicture}
} \hspace{1cm}
\subfloat[Winkel zwischen 2 und 3 am kleinsten]{
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\centering
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){1};
\draw[momentum](5,5)--(4,9);
\node[anchor=east]at(4,9){2};
\draw[momentum](5,5)--(6,9);
\node[anchor=west]at(6,9){3};
\end{tikzpicture}
} \hspace{1cm}
\subfloat[Alle Winkel etwa gleich groß]{
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\centering
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){1};
\draw[momentum](5,5)--(1,8);
\node[anchor=east]at(1,8){2};
\draw[momentum](5,5)--(9,8);
\node[anchor=west]at(9,8){3};
\end{tikzpicture} }
\caption{Bildunterschrift}
\end{figure}
\end{document}
Он компилируется, но субтитры, которые я установил через , \subfloat[...]
сильно смещены:
На этом этапе я окончательно запутался, поскольку использование того же самого кода в классе beamer-class работает совершенно нормально.
Я хочу избежать использования пакетов subfigure
или subcaption
. Я где-то читал, что было бы неплохо обернуть подэлементы в мини-страницы, но это не сработало.
Есть идеи по этому поводу?
редактировать
Я нашел решение, которое работает для меня, используя подсказки @Troy и @John_Kormylo. Я закомментировал \setcapwidth{0.9\textwidth}
и добавил его к каждому рисунку и таблице, кроме тех, где я использую tikzpicture... Добавление \setcapwidth{\textwidth}
проблемных подэлементов ничего не изменило.
решение1
Классы KOMA на самом деле несовместимы с subfig
. Вместо этого вы можете использовать subcaption
.
\documentclass[
a4paper,
11pt,
ngerman
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{caption,subcaption}
\setkomafont{captionlabel}{\small\bfseries}
\setkomafont{caption}{\small}
\setcapindent{0em}
\setcapwidth{0.9\textwidth}
\captionsetup[subfigure]{font={footnotesize},labelfont={bf,footnotesize}}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}
\tikzset{
momentum/.style={
postaction={decorate},
decoration={
markings,
mark=at position 1 with {\arrow[scale=0.8]{>}},
},
},
}
\begin{document}
\begin{figure}[tb]
\begin{subfigure}[b]{.3\textwidth}
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){2};
\draw[momentum](5,5)--(4,9);
\node[anchor=east]at(4,9){1};
\draw[momentum](5,5)--(6,9);
\node[anchor=west]at(6,9){3};
\end{tikzpicture}
\caption{Winkel zwischen 1 und 3 am kleinsten}
\end{subfigure}\hfill
\begin{subfigure}[b]{.3\textwidth}
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){1};
\draw[momentum](5,5)--(4,9);
\node[anchor=east]at(4,9){2};
\draw[momentum](5,5)--(6,9);
\node[anchor=west]at(6,9){3};
\end{tikzpicture}
\caption{Winkel zwischen 2 und 3 am kleinsten}
\end{subfigure}\hfill
\begin{subfigure}[b]{.3\textwidth}
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){1};
\draw[momentum](5,5)--(1,8);
\node[anchor=east]at(1,8){2};
\draw[momentum](5,5)--(9,8);
\node[anchor=west]at(9,8){3};
\end{tikzpicture}
\caption{Alle Winkel etwa gleich groß}
\end{subfigure}
\caption{Bildunterschrift}
\end{figure}
\end{document}
решение2
\setcapdynwidth
Начиная с версии KOMA-Script 3.20 вместо этого можно использовать \setcapwidth
. Из документации KOMA-Script:
Обратите внимание,
\setcapwidth
устанавливаетwidth
немедленно значение параметра width как это\setlength
сделал бы. Если вместо этого вы хотите значениеwidth
при установке заголовка, вы можете использовать\setcapdynwidth
. Могут быть различия в результате, если вы, например, используете lengths как\linewidth
или другие команды в качестве аргументаwidth
.
\documentclass[a4paper,
11pt,
ngerman]{scrreprt}[2016/05/10]
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{caption}
\setkomafont{captionlabel}{\small\bfseries}
\setkomafont{caption}{\small}
\setcapindent{0em}
\setcapdynwidth{0.9\textwidth}% <- changed, needs KOMA-Script version 3.20
\captionsetup[subfigure]{font={footnotesize},labelfont={bf,footnotesize}}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}
\begin{document}
\tikzset{
momentum/.style={postaction={decorate},
decoration={markings, mark=at position 1 with {\arrow[scale=0.8]{>}}}},
}
\begin{figure}[tb]
\subfloat[Winkel zwischen 1 und 3 am kleinsten]{
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\centering
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){2};
\draw[momentum](5,5)--(4,9);
\node[anchor=east]at(4,9){1};
\draw[momentum](5,5)--(6,9);
\node[anchor=west]at(6,9){3};
\end{tikzpicture}
} \hspace{1cm}
\subfloat[Winkel zwischen 2 und 3 am kleinsten]{
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\centering
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){1};
\draw[momentum](5,5)--(4,9);
\node[anchor=east]at(4,9){2};
\draw[momentum](5,5)--(6,9);
\node[anchor=west]at(6,9){3};
\end{tikzpicture}
} \hspace{1cm}
\subfloat[Alle Winkel etwa gleich groß]{
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
\centering
\draw[momentum](5,5)--(5,1);
\node[anchor=north]at(5,1){1};
\draw[momentum](5,5)--(1,8);
\node[anchor=east]at(1,8){2};
\draw[momentum](5,5)--(9,8);
\node[anchor=west]at(9,8){3};
\end{tikzpicture} }
\caption{Bildunterschrift}
\end{figure}
\end{document}
Результат: