Hallo liebe TeXWelt-Community, ich habe folgendes "Problem" bei der Erstellung einer Arbeitsblattes für die Schule. Ich möchte verschiedene Tikzpictures in einer enumerate-Auflistung mit multicols nebeneinander so darstellen, dass das tikzpicture bündig zur Nummerierung ist. Dazu habe ich bereits unter Aligning an enumeration item to the top of a tikzpicture gefunden wie das möglich ist. Nun bin ich ein Freund davon verkürzte Kommandos zu definieren die ich häufig brauche. So hätte ich anstatt \documentclass[12pt]{article} \usepackage{multicol} \usepackage{enumerate} \usepackage{amsmath} \usepackage{tikz} \usetikzlibrary{calc} \usepackage{geometry} \geometry{a4paper, top=15mm, left=15mm, right=20mm, bottom=15mm, headsep=10mm, footskip=10mm} \begin{document} Male die entsprechenden Bruchanteile aus. \begin{multicols}{4} \begin{enumerate}[(a)] \item \begin{tikzpicture}[scale=0.75, baseline={($(current bounding box.north)-(0,2ex)$)}] \draw (0,0) rectangle (4,4); \foreach \i in {1,2,3} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{1}{4}$}; \end{tikzpicture} \item \begin{tikzpicture}[scale=0.75, baseline={($(current bounding box.north)-(0,2ex)$)}] \draw (0,0) rectangle (4,4); \foreach \i in {0.5,1,...,3.5} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{2}{8}$}; \end{tikzpicture} \item \begin{tikzpicture}[scale=0.75, baseline={($(current bounding box.north)-(0,2ex)$)}] \draw (0,0) rectangle(4,4); \draw (2,0) -- (2,4); \draw node at (2,-1) {$\dfrac{1}{2}$}; \end{tikzpicture} \item \begin{tikzpicture}[scale=0.75, baseline={($(current bounding box.north)-(0,2ex)$)}] \draw (0,0) rectangle (4,4); \draw (2,0) -- (2,4); \draw (0,2) -- (4,2); \draw node at (2,-1) {$\dfrac{3}{4}$}; \end{tikzpicture} \end{enumerate} \end{multicols} \end{document} |
Wenn Du \pgfkeys{ /tikz/topline/.style={baseline={([yshift=#1]current bounding box.north)}}, /tikz/topline/.default=-\ht\strutbox } oder \pgfkeys{ /tikz/.cd, topline/.style={baseline={([yshift=#1]current bounding box.north)}}, topline/.default=-\ht\strutbox } oder kürzer \tikzset{ topline/.style={baseline={([yshift=#1]current bounding box.north)}}, topline/.default=-\ht\strutbox } Damit lässt sich beispielsweise Wird für \tikzset{ topline/.style={baseline={([yshift=-\ht\strutbox]current bounding box.north)}} } verwenden. Beispiel: \documentclass[12pt,a4paper]{article} \usepackage{multicol} \usepackage{enumerate} \usepackage{amsmath} \usepackage{tikz} \usepackage{geometry} \geometry{margin=15mm, right=20mm, headsep=10mm, footskip=10mm} \tikzset{ topline/.style={baseline={([yshift=#1]current bounding box.north)}}, topline/.default=-\ht\strutbox } \begin{document} Male die entsprechenden Bruchanteile aus. \begin{multicols}{4} \begin{enumerate}[(a)] \item \begin{tikzpicture}[scale=0.75, topline] \draw (0,0) rectangle (4,4); \foreach \i in {1,2,3} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{1}{4}$}; \end{tikzpicture} \item \begin{tikzpicture}[scale=0.75, topline] \draw (0,0) rectangle (4,4); \foreach \i in {0.5,1,...,3.5} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{2}{8}$}; \end{tikzpicture} \item \begin{tikzpicture}[scale=0.75, topline] \draw (0,0) rectangle(4,4); \draw (2,0) -- (2,4); \draw node at (2,-1) {$\dfrac{1}{2}$}; \end{tikzpicture} \item \begin{tikzpicture}[scale=0.75, topline] \draw (0,0) rectangle (4,4); \draw (2,0) -- (2,4); \draw (0,2) -- (4,2); \draw node at (2,-1) {$\dfrac{3}{4}$}; \end{tikzpicture} \end{enumerate} \end{multicols} \end{document} Da alle \documentclass[12pt,a4paper]{article} \usepackage{multicol} \usepackage{enumerate} \usepackage{amsmath} \usepackage{tikz} \usepackage{geometry} \geometry{margin=15mm, right=20mm, headsep=10mm, footskip=10mm} \tikzset{ topline/.style={baseline={([yshift=#1]current bounding box.north)}}, topline/.default=-\ht\strutbox } \begin{document} Male die entsprechenden Bruchanteile aus. \begin{multicols}{4} \begin{enumerate}[(a)] \tikzset{every picture/.style={scale=0.75, topline}}% lokal innerhalb der enumerate-Umgebung \item \begin{tikzpicture} \draw (0,0) rectangle (4,4); \foreach \i in {1,2,3} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{1}{4}$}; \end{tikzpicture} \item \begin{tikzpicture} \draw (0,0) rectangle (4,4); \foreach \i in {0.5,1,...,3.5} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{2}{8}$}; \end{tikzpicture} \item \begin{tikzpicture} \draw (0,0) rectangle(4,4); \draw (2,0) -- (2,4); \draw node at (2,-1) {$\dfrac{1}{2}$}; \end{tikzpicture} \item \begin{tikzpicture} \draw (0,0) rectangle (4,4); \draw (2,0) -- (2,4); \draw (0,2) -- (4,2); \draw node at (2,-1) {$\dfrac{3}{4}$}; \end{tikzpicture} \end{enumerate} \end{multicols} \end{document} beantwortet 17 Feb '22, 14:25 esdd 2
Bei verwendung von
(17 Feb '22, 19:06)
huibub
@esdd Großartig, vielen Dank, genau das was ich gesucht hab. Ich ziehe die Variante mit
(17 Feb '22, 20:15)
maqu
@huibub vielen Dank für den Hinweis. Worin liegen denn die Vorteile von
(17 Feb '22, 20:17)
maqu
@maqu Wenn dir der von @huibub explizit genannte Vorteil noch nicht genügt, dann vergleiche einfach einmal die Anleitungen der beiden Pakete. Das Paket
(19 Feb '22, 09:12)
gast3
@maqu Ja,
(20 Feb '22, 11:58)
esdd
@esdd danke für deine Erklärung ich habe es glaube verstanden, auch wenn deine Verlinkung mich immer nur auf meine Frage weiterleitet ^^ ... ich habe unter https://tex.stackexchange.com/questions/395871/how-do-i-get-the-height-and-depth-of-a-box-as-a-dimension jetzt nachvollziehen können wie das mit der
(23 Feb '22, 11:08)
maqu
Ergebnis 5 von 6
show 1 more comments
|
Keine eigene Antwort sondern als Ergänzung: die Verwendung von \documentclass[12pt,a4paper]{article} \usepackage{tasks} \usepackage{amsmath} \usepackage{tikz} \usepackage{geometry} \geometry{margin=15mm, right=20mm, headsep=10mm, footskip=10mm} \tikzset{ topline/.style={baseline={([yshift=#1]current bounding box.north)}}, topline/.default=-\ht\strutbox } \AddToHook{env/tasks/begin}{\tikzset{every picture/.style={scale=0.75, topline}}} \settasks{ label = (\alph*) , label-width = 16pt } \begin{document} Male die entsprechenden Bruchanteile aus. \begin{tasks}(4) \task \begin{tikzpicture} \draw (0,0) rectangle (4,4); \foreach \i in {1,2,3} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{1}{4}$}; \end{tikzpicture} \task \begin{tikzpicture} \draw (0,0) rectangle (4,4); \foreach \i in {0.5,1,...,3.5} { \draw (0,\i) -- (4,\i); } \draw node at (2,-1) {$\dfrac{2}{8}$}; \end{tikzpicture} \task \begin{tikzpicture} \draw (0,0) rectangle(4,4); \draw (2,0) -- (2,4); \draw node at (2,-1) {$\dfrac{1}{2}$}; \end{tikzpicture} \task \begin{tikzpicture} \draw (0,0) rectangle (4,4); \draw (2,0) -- (2,4); \draw (0,2) -- (4,2); \draw node at (2,-1) {$\dfrac{3}{4}$}; \end{tikzpicture} \end{tasks} \end{document} beantwortet 19 Feb '22, 11:17 cgnieder |
Für so etwas kann man die Umgebung \documentclass[12pt]{article} \usepackage{multicol} \usepackage{enumerate} \usepackage{adjustbox} \usepackage{amsmath} \usepackage{tikz} \usepackage{geometry} \geometry{a4paper, top=15mm, left=15mm, right=20mm, bottom=15mm, headsep=10mm, footskip=10mm} \newenvironment{toppicture}{\begin{adjustbox}{valign=t}\begin{tikzpicture}[scale=0.75]}{\end{tikzpicture}\end{adjustbox}} \begin{document} Male die entsprechenden Bruchanteile aus. \begin{multicols}{4} \begin{enumerate}[(a)] \item \begin{toppicture} \draw (0,0) rectangle (4,4); \foreach \i in {1,2,3} { \draw (0,\i) -- (4,\i); } \node at (2,-1) {$\dfrac{1}{4}$}; \end{toppicture} \item \begin{toppicture} \draw (0,0) rectangle (4,4); \foreach \i in {0.5,1,...,3.5} { \draw (0,\i) -- (4,\i); } \node at (2,-1) {$\dfrac{2}{8}$}; \end{toppicture} \item \begin{toppicture} \draw (0,0) rectangle(4,4); \draw (2,0) -- (2,4); \node at (2,-1) {$\dfrac{1}{2}$}; \end{toppicture} \item \begin{toppicture} \draw (0,0) rectangle (4,4); \draw (2,0) -- (2,4); \draw (0,2) -- (4,2); \node at (2,-1) {$\dfrac{3}{4}$}; \end{toppicture} \end{enumerate} \end{multicols} \end{document} beantwortet 15 Feb '22, 12:59 Cletus Hey Cletus, erstmal danke für deine Antwort. Ja die adjustbox-umgebung war mir nicht bekannt und löst tatsächlich mein vorheriges Problem mit dem aligning on top besser als mit der baseline zu arbeiten. Für dieses Arbeitsblatt löst auch dein neu definiertes environment mein Problem, aber auf anderen Arbeitsblättern, wo ich andere tikzpictures vielleicht anders scalen oder zusätzliche Optionen in das Tikzpicture einfügen möchte, kann ich dann die toppicture Umgebung nicht mehr nehmen. Wahrscheinlich ist es besser erst einmal um jedes Tikzpicture die entsprechende adjustbox-umgebung zu nutzen.
(16 Feb '22, 10:19)
maqu
Ich dachte nur es gibt eine Möglichkeit eine tikzpicture-option zu definieren, die ich einfach angeben kann, wenn ich das tikzpicture oben bündig mit der enumerate-auflistung haben möchte ... das wäre die "noch etwas" einfachere Variante als jedes mal auf die adjustbox-umgebung zurückgreifen zu müssen ;D ... aber trotzdem Danke für die Antwort!
(16 Feb '22, 10:22)
maqu
@maqu TikZ verwendet
(16 Feb '22, 11:45)
huibub
@maqu Du kannst die eigene Umgebung auch mit einem optionalen Argument definieren, um unterschiedliche Skalierungen angeben zu können. \newenvironment{toppicture}[1][]{\begin{adjustbox}{valign=t}\begin{tikzpicture}[#1]}{\end{tikzpicture}\end{adjustbox}}
(16 Feb '22, 18:27)
Cletus
@huibub danke dir, aber leider bin ich aus Kapitel 87 der pgf-Anleitung nicht schlau geworden >.< mir ist aus den Beispielen dort nicht ersichtlich, wie ich eine Option für das tikzpicture selbst definieren kann ... vielleicht hast du einen Hinweis welchen Befehl genau ich dafür nutzen muss, dann lese ich mich da nochmal rein und probiere etwas herum @Cletus ja so kann man es natürlich auch machen ^^ ... ich dachte die Variablen die ich mit #1 usw für eine neue Umgebung definiere sind immer zwingend anzugeben, aber anscheinend nur optional
(16 Feb '22, 21:11)
maqu
Ergebnis 5 von 6
show 1 more comments
|
Bei mir wird bei diesem beitrag der code nicht angezeigt. Ich sehe nur "Code, hier editierbar zum Übersetzen:", eine graue Linie und den Knopf "Ausgabe erzeugen". Mit dem kann ich zwar die ausgabe erzeugen, sehe aber nicht, worauf diese basiert. In der antwort @Cletus kann ich den code dagegen sehen. Das hatte ich bisher noch nie. Liegt das am beitrag oder irgendwo auf meiner seite. Hat das sonst noch jemand?
@huibub Da war html-Code im Beitrag, ich habe ihn entfernt. Ist es besser?
@stefan Leider noch immer nicht. Der code blitzt beim neuladen der Seite jetzt kurz auf, wird aber sofort wieder eingeklappt. Ich komme da einfach nicht ran. Das ist aber bisher der einzige beitrag, bei dem ich das beobachten konnte.
@huibub tatsächlich kann ich alles sehen und auch die Ausgabe erzeugen, auch wenn ich nicht angemeldet bin und z.B. über den Browser am Handy schaue ... sry falls das an mir liegen sollte^^