Matroids Matheplanet Forum Index
Moderiert von Stefan_K
Matroids Matheplanet Forum Index » Textsatz mit LaTeX » Maßeinheit, die scale-neutral ist
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich Maßeinheit, die scale-neutral ist
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27752
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-01-28

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Gibt es eine Maßeinheit, die nicht der Skalierung mit \begin{tikzpicture}[scale=1.0] unterworfen ist? 1mm, 15pt etc. werden mit \begin{tikzpicture}[scale=0.4] skaliert, was auch völlig ok ist.
Aber:
Wie an den beiden Bildern zu sehen sind die Maßpfeile im unteren Bild zu dicht am Dreieck. Liegt daran, daß die Beschriftung (Label) nicht skaliert wird, was auch ok ist.
Aber dann brauche ich eben eine Maßeinheit für den Abstand der Maßpfeile von $A-B$ nach unten bzw. $C$ nach oben, so daß die Maßpfeile unter-/oberhalb der Ecklabels bleiben, wenn skaliert wird.
Es wäre auch schön – und damit vielleicht gleich mit zu erschlagen – wenn die Kreismarkierung der Ecken ebenfalls unabhängig von der Skalierung wäre. Also eine konstante Größe hätte.
Die Größe der Pfeilspitzen ist ja z.B. auch bei beiden Bildern gleich.
Was bei extremer Skalierung (z.B. $1.0$ und $0.05$) natürlich alles Unfug wäre, das ist klar. Aber $1.0$ und $0.4$ ist jetzt nicht sooo exotisch.

Wozu?
Verwendung der gleichen Grafik (natürlich aus dem gleichen Code erzeugt) z.B. auf dem Deckblatt (groß) und im Text (klein).

Quelltext
LaTeX
  1. \documentclass[11pt,a4paper]{scrartcl}
  2. \usepackage[margin=1.5cm,nohead]{geometry}
  3. \usepackage[utf8]{inputenc}
  4. \usepackage[german]{babel}
  5. \usepackage[T1]{fontenc}
  6. \usepackage{amsmath}
  7. \usepackage{amsfonts}
  8. \usepackage{amssymb}
  9. \usepackage{tikz}
  10. \usetikzlibrary {calc}
  11. \begin{document}
  12. \pagestyle{empty}
  13. Erstellung der TikZ-Grafiken
  14.  
  15. \begin{figure}[htb]
  16. \begin{tikzpicture}[scale=1.0]
  17. % ein paar Maße definieren
  18. \pgfmathsetmacro{\c}{17} % Grundseite c
  19. \pgfmathsetmacro{\H}{0.6*\c} % Höhe H
  20. \pgfmathsetmacro{\Cx}{0.6*\c} % Höhenfußpunkt = x-Koordinate von C
  21.  
  22. % Ecken des Dreiecks
  23. \coordinate[label=below left:$A$] (A) at (0,0);
  24. \coordinate[label=below right:$B$] (B) at (\c,0);
  25. \coordinate[label=above:$C$] (C) at (\Cx,\H);
  26.  
  27. \def\ta{0.65} % Teilung A1-B1, von C aus gesehen
  28. \coordinate[label=above left :$A_1$] (A1) at ($ (C)!\ta!(A) $);
  29. \coordinate[label=above right:$B_1$] (B1) at ($ (C)!\ta!(B) $);
  30.  
  31. \draw[fill=lightgray!20] (A) -- (B) -- (C) -- cycle;
  32.  
  33. % Maß der Grundseite
  34. \coordinate (AP) at ($ (A) - (0,5ex) $);
  35. \coordinate (BP) at ($ (B) - (0,5ex) $);
  36. % und der Teilungslinie
  37. \coordinate (A1P) at ($ (A1) + (0,\ta*\H) + (0,5ex) $);
  38. \coordinate (B1P) at ($ (B1) + (0,\ta*\H) + (0,5ex) $);
  39.  
  40. % horizontale Teilung
  41. \draw (A1) -- (B1);
  42.  
  43. % Maßpfeile
  44. \draw[<->] (AP) -- (BP);
  45. \coordinate[label=below:$c$] (lblc) at ($ (AP)!0.5!(BP) $);
  46. \draw[<->] (A1P) -- (B1P);
  47. \coordinate[label=above:$c_1$] (lblc1) at ($ (A1P)!0.5!(B1P) $);
  48. \draw[dotted] (A1) -- (A1P);
  49. \draw[dotted] (B1) -- (B1P);
  50.  
  51. \foreach \point in {A,B,C}
  52. \draw[fill=white] (\point) circle[radius=3pt];
  53.  
  54. \end{tikzpicture}
  55. \end{figure}
  56.  
  57. \begin{figure}[htb]
  58. \begin{tikzpicture}[scale=0.4]
  59. % ein paar Maße definieren
  60. \pgfmathsetmacro{\c}{17} % Grundseite c
  61. \pgfmathsetmacro{\H}{0.6*\c} % Höhe H
  62. \pgfmathsetmacro{\Cx}{0.6*\c} % Höhenfußpunkt = x-Koordinate von C
  63.  
  64. % Ecken des Dreiecks
  65. \coordinate[label=below left:$A$] (A) at (0,0);
  66. \coordinate[label=below right:$B$] (B) at (\c,0);
  67. \coordinate[label=above:$C$] (C) at (\Cx,\H);
  68.  
  69. \def\ta{0.65} % Teilung A1-B1, von C aus gesehen
  70. \coordinate[label=above left :$A_1$] (A1) at ($ (C)!\ta!(A) $);
  71. \coordinate[label=above right:$B_1$] (B1) at ($ (C)!\ta!(B) $);
  72.  
  73. \draw[fill=lightgray!20] (A) -- (B) -- (C) -- cycle;
  74.  
  75. % Maß der Grundseite
  76. \coordinate (AP) at ($ (A) - (0,5ex) $);
  77. \coordinate (BP) at ($ (B) - (0,5ex) $);
  78. % und der Teilungslinie
  79. \coordinate (A1P) at ($ (A1) + (0,\ta*\H) + (0,5ex) $);
  80. \coordinate (B1P) at ($ (B1) + (0,\ta*\H) + (0,5ex) $);
  81.  
  82. % horizontale Teilung
  83. \draw (A1) -- (B1);
  84.  
  85. % Maßpfeile
  86. \draw[<->] (AP) -- (BP);
  87. \coordinate[label=below:$c$] (lblc) at ($ (AP)!0.5!(BP) $);
  88. \draw[<->] (A1P) -- (B1P);
  89. \coordinate[label=above:$c_1$] (lblc1) at ($ (A1P)!0.5!(B1P) $);
  90. \draw[dotted] (A1) -- (A1P);
  91. \draw[dotted] (B1) -- (B1P);
  92.  
  93. \foreach \point in {A,B,C}
  94. \draw[fill=white] (\point) circle[radius=3pt];
  95.  
  96. \end{tikzpicture}
  97. \end{figure}
  98. \end{document}

Um langes Suchen und Vergleichen zu ersparen:
Der Code für die beiden Dreiecke unterscheidet sich nur in den Zeilen 16 und 58, also in der Skalierung.

Und hier die Bilder:
<math>
Erstellung der TikZ-Grafiken

\begin{figure}[htb]
\begin{tikzpicture}[scale=1.0]
% ein paar Mae definieren
\pgfmathsetmacro{\c}{17}                        % Grundseite c
\pgfmathsetmacro{\H}{0.6*\c}                % Hhe H
\pgfmathsetmacro{\Cx}{0.6*\c}                % Hhenfupunkt = x-Koordinate von C

% Ecken des Dreiecks
\coordinate[label=below left:$A$]  (A) at (0,0);
\coordinate[label=below right:$B$] (B) at (\c,0);
\coordinate[label=above:$C$]       (C) at (\Cx,\H);

\def\ta{0.65} % Teilung A1-B1, von C aus gesehen
\coordinate[label=above left :$A_1$]        (A1)        at ($ (C)!\ta!(A) $);
\coordinate[label=above right:$B_1$]        (B1)        at ($ (C)!\ta!(B) $);

\draw[fill=lightgray!20] (A) -- (B) -- (C) -- cycle;

% Ma der Grundseite
\coordinate (AP) at ($ (A) - (0,5ex) $);
\coordinate (BP) at ($ (B) - (0,5ex) $);
% und der Teilungslinie
\coordinate (A1P) at ($ (A1) + (0,\ta*\H) + (0,5ex) $);
\coordinate (B1P) at ($ (B1) + (0,\ta*\H) + (0,5ex) $);

% horizontale Teilung
\draw (A1) -- (B1);

% Mapfeile
\draw[<->] (AP) -- (BP);
\coordinate[label=below:$c$] (lblc) at ($ (AP)!0.5!(BP) $);
\draw[<->] (A1P) -- (B1P);
\coordinate[label=above:$c_1$] (lblc1) at ($ (A1P)!0.5!(B1P) $);
\draw[dotted] (A1) -- (A1P);
\draw[dotted] (B1) -- (B1P);

\foreach \point in {A,B,C}
\draw[fill=white] (\point) circle[radius=3pt];

\end{tikzpicture}
\end{figure}

\begin{figure}[htb]
\begin{tikzpicture}[scale=0.4]
% ein paar Mae definieren
\pgfmathsetmacro{\c}{17}                        % Grundseite c
\pgfmathsetmacro{\H}{0.6*\c}                % Hhe H
\pgfmathsetmacro{\Cx}{0.6*\c}                % Hhenfupunkt = x-Koordinate von C

% Ecken des Dreiecks
\coordinate[label=below left:$A$]  (A) at (0,0);
\coordinate[label=below right:$B$] (B) at (\c,0);
\coordinate[label=above:$C$]       (C) at (\Cx,\H);

\def\ta{0.65} % Teilung A1-B1, von C aus gesehen
\coordinate[label=above left :$A_1$]        (A1)        at ($ (C)!\ta!(A) $);
\coordinate[label=above right:$B_1$]        (B1)        at ($ (C)!\ta!(B) $);

\draw[fill=lightgray!20] (A) -- (B) -- (C) -- cycle;

% Ma der Grundseite
\coordinate (AP) at ($ (A) - (0,5ex) $);
\coordinate (BP) at ($ (B) - (0,5ex) $);
% und der Teilungslinie
\coordinate (A1P) at ($ (A1) + (0,\ta*\H) + (0,5ex) $);
\coordinate (B1P) at ($ (B1) + (0,\ta*\H) + (0,5ex) $);

% horizontale Teilung
\draw (A1) -- (B1);

% Mapfeile
\draw[<->] (AP) -- (BP);
\coordinate[label=below:$c$] (lblc) at ($ (AP)!0.5!(BP) $);
\draw[<->] (A1P) -- (B1P);
\coordinate[label=above:$c_1$] (lblc1) at ($ (A1P)!0.5!(B1P) $);
\draw[dotted] (A1) -- (A1P);
\draw[dotted] (B1) -- (B1P);

\foreach \point in {A,B,C}
\draw[fill=white] (\point) circle[radius=3pt];

\end{tikzpicture}
\end{figure}
</math>

Ich bin gespannt...


-----------------
Bild
\(\endgroup\)


Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Triceratops
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 28.04.2016
Mitteilungen: 5460
Herkunft: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2021-01-28

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
2021-01-28 00:39 - viertel im Themenstart schreibt:
Wozu?
Verwendung der gleichen Grafik (natürlich aus dem gleichen Code erzeugt) z.B. auf dem Deckblatt (groß) und im Text (klein).

Auf einem Deckblatt würde ich mich dann aber schon sehr darüber wundern, wenn die Labels so (verhältnismäßig) klein sind. Sie sollten auf einem Deckblatt meiner Ansicht nach skaliert werden (gutes Beispiel ist dieses Cover). Das finde ich auch bei deinem Beispiel hier bereits grenzwertig. Ich würde die zweite Zeichnung als Grundlage nehmen (entsprechend die Größenangaben ändern) und die erste dann durch Hochskalieren bekommen, wobei das Attribut transform shape (was man auf die gesamte Grafik, oder auf einzelne Scopes oder Elemente anwenden kann) dafür sorgt, dass auch die Labels skaliert werden. Außerdem wäre es ratsam, um Code Duplication (Code Smell) zu vermeiden, eine Funktion zu definieren, die beide Grafiken abdeckt, etwa mit dem Skalierungsfaktor als Variable.

Nachtrag: Mit scopes lässt sich vermutlich auch deine eigentliche Frage beantworten.

<math>
\begin{tikzpicture}[scale=0.5]
\begin{scope}
\draw[thick,red] (0,0) -- (2,0);
\end{scope}
\begin{scope}[scale=2]
\draw[thick,blue] (0,1) -- (2,1);
\end{scope}
\end{tikzpicture}
</math>
 
LaTeX
\begin{tikzpicture}[scale=0.5]
  \begin{scope}
    \draw[thick,red] (0,0) -- (2,0);
  \end{scope}
  \begin{scope}[scale=2]
    \draw[thick,blue] (0,1) -- (2,1);
  \end{scope}
\end{tikzpicture}
\(\endgroup\)


Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27752
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2021-01-28


Ok, danke👍
Dann werde ich das Konzept nochmal überdenken und überarbeiten.
Und solche „Tricks“ wie scope muß man natürlich auch erst mal kennenlernen. Und 1300 Seiten Handbuch liest man nicht mal eben schnell durch😁



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Wario
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 01.05.2020
Mitteilungen: 326
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2021-02-23 12:14

\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Mir ist das zuviel auf einmal; daher weiß ich nicht, ob ich das Problem / die Frage richtig verstehe.

Daher, wie immer, der Tip: möglichst auf Einzelprobleme runterbrechen. Prinzip- oder Minimalbeispiele verwenden, die bereinigt sind und grundsätzlich lauffähig sind. In einem LaTeX-Forum würde man Dir das sofort sagen.

Ich verstehe die Frage so, dass etwas gezeichnet ist, wobei das ganze tikzpicture auch noch skaliert ist "scale=1.456".
Nun soll darin etwas auftauchen, das nicht skaliert ist und absolute Maße hat, z.B. ein Quadrat der Kantenlänge 1cm.

Es könnte eine globale Lösung geben mit dem tikzscale-Paket.
Per Default kenne ich das nur in der Form einer Brute-Force-Nachkorrektur: scale=1/1.456; das lässt sich auf einzelne draws anwenden, bei Umfangreicherem auch auf eine scope-Umgebung.

<math>
\begin{tikzpicture}[]
\draw[] (0,0) rectangle (4,3);
\draw[red] (0,0) rectangle (10mm,1cm) node[above, right]{nicht skaliert};
\end{tikzpicture}

\bigskip
\begin{tikzpicture}[scale=1.456]
\draw[] (0,0) rectangle (4,3);
\draw[red] (0,0) rectangle (10mm,1cm) node[above, right]{wird mitskaliert};
\end{tikzpicture}

\bigskip
\pgfmathsetmacro\myscale{1.456}
\begin{tikzpicture}[scale=\myscale]
\draw[] (0,0) rectangle (4,3);
\draw[red, scale=1/\myscale] (0,0) rectangle (10mm,1cm) node[above, right]{ist entskaliert};
\end{tikzpicture}
</math>

LaTeX
\documentclass[parskip=half]{scrartcl}
\usepackage{tikz}
\begin{document}
 
\begin{tikzpicture}[]
\draw[] (0,0) rectangle (4,3);
\draw[red] (0,0) rectangle (10mm,1cm) node[above, right]{nicht skaliert};
\end{tikzpicture}
 
\begin{tikzpicture}[scale=1.456]
\draw[] (0,0) rectangle (4,3);
\draw[red] (0,0) rectangle (10mm,1cm) node[above, right]{wird mitskaliert};
\end{tikzpicture}
 
\pgfmathsetmacro\myscale{1.456}
\begin{tikzpicture}[scale=\myscale]
\draw[] (0,0) rectangle (4,3);
\draw[red, scale=1/\myscale] (0,0) rectangle (10mm,1cm) node[above, right]{ist entskaliert};
\end{tikzpicture}
\end{document}



\(\endgroup\)


Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel hat die Antworten auf ihre/seine Frage gesehen.
viertel hatte hier bereits selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]