TUD-LaTeX-Forum
http://latex.wcms-file3.tu-dresden.de/phpBB3/

Verschobene Beschriftung in zwei Abbildungen nebeneinander
http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11&t=521
Seite 1 von 1

Autor:  Fab [ Mittwoch 15. Juli 2020, 07:28 ]
Betreff des Beitrags:  Verschobene Beschriftung in zwei Abbildungen nebeneinander

Hallo,

ich habe folgendes Problem: Ich möchte zwei oder mehrere Bilder nebeneinander haben, die oben in der Ecke eine Beschriftung a), b) usw. erhalten und eine gemeinsame Bildunterschrift erhalten. Dafür habe ich folgende Befehlsdefinition und Ausführung im Text:
Meine Befehlsdefinition:
Code:
\documentclass[english,ngerman,10pt,twoside=false,bibliography=totoc,BCOR=5mm,numbers=noendperiod]{tudscrbook}
\usepackage{transparent}
\usepackage{hhline}
\newcommand{\subfigimag}[3][,]{
   \setbox1=\hbox{\includegraphics[#1]{#3}}% Store image in box
   \leavevmode\rlap{\usebox1}% Print image
   \rlap{\raisebox{\dimexpr\ht1-0.83\baselineskip}{\transparent{0.6}\colorbox{white}{\transparent{1}#2}}}% Print label
   \phantom{\usebox1}% Insert appropriate spacing
}

\begin{document}
\begin{figure}[!htb]
   \begin{tabular}{@{}p{0.5\textwidth}@{\quad}p{0.5\textwidth}@{}}
      \subfigimag[height=50pt]{a}{Bilder/Bild_1}&
      \subfigimag[height=50pt]{b}{Bilder/Bild_2}\\
   \end{tabular}
   \caption{Bezeichnung a sitzt tiefer als b}
\end{figure}
\end{document}


Ich hoffe, ich habe gerade kein entscheidendes package vergessen.
Das funktioniert soweit auch gut, aber das a) und bei mehr als zwei Bildern dann auch das c) sitzen tiefer als b) und d).
Das Problem tritt nur in der TU-Umgebung auf. Bild

Weiß jemand, welche Option mir das beschert und wie man diese ausstellt?
Vielen Dank

Autor:  tudscr [ Mittwoch 15. Juli 2020, 10:28 ]
Betreff des Beitrags:  Re: Verschobene Beschriftung in zwei Abbildungen nebeneinand

Fab hat geschrieben:
Das Problem tritt nur in der TU-Umgebung auf.

Nein! Das tritt genauso mit den KOMA-Script-Klassen (scrbook) und den Standardklassen (book) auf.
Code:
\documentclass{book}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{transparent}
\newcommand{\subfigimag}[3][,]{%
   \setbox1=\hbox{\includegraphics[#1]{#3}}% Store image in box
   \leavevmode\rlap{\usebox1}% Print image
   \rlap{\raisebox{\dimexpr\ht1-0.83\baselineskip}{\transparent{0.6}\colorbox{white}{\transparent{1}#2}}}%
   % Print label
   \phantom{\usebox1}% Insert appropriate spacing
}

\begin{document}
\begin{figure}[!htb]
   \begin{tabular}{@{}p{0.5\textwidth}@{\quad}p{0.5\textwidth}@{}}
      \subfigimag[height=50pt]{a}{example-image}&
      \subfigimag[height=50pt]{b}{example-image}
   \end{tabular}
   \caption{Bezeichnung a sitzt tiefer als b}
\end{figure}
\end{document}


Ursächlich ist diese Zeile:
Code:
\rlap{\raisebox{\dimexpr\ht1-0.83\baselineskip}{\transparent{0.6}\colorbox{white}{\transparent{1}#2}}}%

Du verschiebst alles um einen fixen Wert (0.83\baselineskip) nach unten und baust dann eine Box um das erste obligatorische Argument, die eben nur so groß ist, wie der Inhalt selbst. Du kannst ja probehalber mal j oder Ä als Argument verwenden, dann wirst du sehen, dass die colorbox auch eine andere Größe hat.

Du kannst entweder das Argument von \raisebox zum Verschieben auf die Größe des obligatorischen Argumentes deines Befehls anpassen oder du fixierst die Größe der Overlay-Box unabhängig vom Inhalt. Und noch als Tipp: Wenn du mit internen Boxen, Registern etc. arbeitest, solltest du das besser immer in einer lokalen Gruppe machen, sonst fliegt dir das irgendwann um die Ohren und du weißt nicht warum.

Code:
% variable Größe des vertikalen Versatz'
\newcommand{\vsubfigimag}[3][,]{%
  \begingroup%
    \setbox1=\hbox{\includegraphics[#1]{#3}}% Store image in box
    \leavevmode\rlap{\usebox1}% Print image
    \setbox2=\vbox{#2}%
    \rlap{%
      % \fboxsep für zusätzlichen Abstand
      \raisebox{\dimexpr\ht1-\ht2-\fboxsep}{%
        \transparent{0.6}\colorbox{white}{\transparent{1}#2}%
      }%
    }%
    % Print label
    \phantom{\usebox1}% Insert appropriate spacing
 \endgroup%
}
% feste Größe der Overlay-Box
\newcommand{\fsubfigimag}[3][,]{%
  \begingroup%
    \setbox1=\hbox{\includegraphics[#1]{#3}}% Store image in box
    \leavevmode\rlap{\usebox1}% Print image
    \rlap{%
      \raisebox{\dimexpr\ht1}{%
        \fboxsep=0pt%
        \transparent{0.6}\colorbox{white}{%
          % nach Belieben anzupassen
          \vtop to 1.25\baselineskip{%
            \vfil%
            % nach Belieben anzupassen
            \hbox to 25pt{%
              \transparent{1}\hfil#2\hfil%
            }%
            \vfil%
          }%
        }%
      }%
    }%
    % Print label
    \phantom{\usebox1}% Insert appropriate spacing
 \endgroup%
}


Ich weiß nicht, ob das Tabellenkonstrukt nur fix für das Minimalbeispiel von dir gestrickt wurde. Falls nicht, würde ich evtl. tabularx in Erwägung ziehen. Alles noch einmal zusammengefasst:

Code:
\documentclass{tudscrbook}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{transparent}
\usepackage{tabularx}
\newcommand{\vsubfigimag}[3][,]{%
  \begingroup%
    \setbox1=\hbox{\includegraphics[#1]{#3}}% Store image in box
    \leavevmode\rlap{\usebox1}% Print image
    \setbox2=\vbox{#2}%
    \rlap{%
      % \fboxsep für zusätzlichen Abstand
      \raisebox{\dimexpr\ht1-\ht2-\fboxsep}{%
        \transparent{0.6}\colorbox{white}{\transparent{1}#2}%
      }%
    }%
    % Print label
    \phantom{\usebox1}% Insert appropriate spacing
 \endgroup%
}
\newcommand{\fsubfigimag}[3][,]{%
  \begingroup%
    \setbox1=\hbox{\includegraphics[#1]{#3}}% Store image in box
    \leavevmode\rlap{\usebox1}% Print image
    \rlap{%
      \raisebox{\dimexpr\ht1}{%
        % wird von \colorbox verwendet und hier unschädlich gemacht
        \fboxsep=0pt%
        \transparent{0.6}\colorbox{white}{%
          \vtop to 1.25\baselineskip{%
            \vfil%
            \hbox to 25pt{%
              \transparent{1}\hfil#2\hfil%
            }%
            \vfil%
          }%
        }%
      }%
    }%
    % Print label
    \phantom{\usebox1}% Insert appropriate spacing
 \endgroup%
}

\begin{document}
\begin{figure}[!htb]
   \begin{tabularx}{\textwidth}{>{\centering}X>{\centering}X>{\centering}X}
      \vsubfigimag[height=50pt]{a}{example-image}&
      \vsubfigimag[height=50pt]{b}{example-image}&
      \vsubfigimag[height=50pt]{Ägxxx}{example-image}
   \end{tabularx}
   \caption{Bezeichnung a sitzt nicht tiefer als b, Größe der Box ist variabel}
\end{figure}
\begin{figure}[!htb]
   \begin{tabularx}{\textwidth}{>{\centering}X>{\centering}X>{\centering}X}
      \fsubfigimag[height=50pt]{a}{example-image}&
      \fsubfigimag[height=50pt]{b}{example-image}&
      \fsubfigimag[height=50pt]{Ägxxx}{example-image}
   \end{tabularx}
   \caption{Bezeichnung a sitzt nicht tiefer als b, Größe der Box ist fix}
\end{figure}
\end{document}


Dateianhänge:
test.pdf [30.86 KiB]
124-mal heruntergeladen

Autor:  Fab [ Donnerstag 16. Juli 2020, 09:17 ]
Betreff des Beitrags:  Re: Verschobene Beschriftung in zwei Abbildungen nebeneinand

Vielen Dank, das hat mir sehr geholfen.

Autor:  tudscr [ Donnerstag 16. Juli 2020, 11:13 ]
Betreff des Beitrags:  Re: Verschobene Beschriftung in zwei Abbildungen nebeneinand

Freut mich, dass ich helfen konnte.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/