box inside box

FriedrichLaher shared this question 1 year ago
Needs Answer

Eine, ersteinmal, freibewegliche Textbox t1

soll

in die rechte obere Ecke einer anderen Textbox t0

plaziert werden und dort bleiben,

egal

wie t1 verschoben und das Zeichenblatt gezoomt wird.

Also,

naiver, Position-Eintrag für t1


Eckpunkt[t0,3] - ( Länge(t1),0 )

wobei

Länge(t1) = x( Eckpunkt[t1,3] ) - x( Eckpunkt[t1,4] ) geltensoll .

DA

entsteht leider eine "Zirkeldefinition" .

Gibt

es dafür eine elegantere Lösung als

ein unsichtbares Duplikat, nur zum Zweck des "Maßnehmens" ?

- Leider ist auch da eome feinfühlige x-Korrektur nötig.

Comments (11)

photo
1

Und wozu bitteschön?

photo
1

Zum anklicken? Weil es schöner aussieht?

Was willst du erreichen?

photo
1

Eine Antwort scheint für den ThreadErsteller nicht wichtig zu sein.

Aber Ich würde mich dafür interessieren.

Anwendungsbeispiele: Eine Box wie für chemische Elemente oder ähnliches, Ein übergrosser Buchstabe zu Beginne eines (fliess-Textes), also primär für Darstllungs-Zwecke.

0b657c869e6ba1d40ffdc2f1952938ea

69510d00f5822a342f732728fcaa56a6

photo
1

Ersteres lässt sich durch ein wenig LaTeX-Trickserei bewerkstelligen (allgemein alles was irgendwie tabellenförmig Strukturiert ist). Die Abstände/Positionsformatierung kann man in GGb leider nur durch das eigentlich zu vermeidende LaTeX-Zeichen \! erreichen (da in GGB das zuweisen fester Spaltenbreiten und Zeilenhöhen nicht möglich zu sein scheint).

\fcolorbox{black}{orange}{
\begin{array}{lr}
\!\!\!\!\Large{\bf{4}}\!\!\! & \sf{9.012}\!\!\!\!\! \\
\; & \!\!\Huge{\bf{Be}}\!\! \\
\; & \!\!\!\!\!\footnotesize{\text{Beryllium}}\!\!\!\!\\
\end{array}
}

Durch das einfügen von \hline vor oder hinter jede Zeile der array-Umgebung und das einfügen von | zwischen den Spaltenformaten lässt sich die Tabellenstruktur erkennen./2iRLLIXVIvIAAAAAElFTkSuQmCC


Zweiteres bzw. die Initiale lassen sich in herkömmlichen LaTeX über das Paket lettrine erreichen. In GGb ist dies nicht möglich. Durch Hinbiegen der array- oder tabular-Umgebung wird dies vermutlich eher schwerlich möglich sein. Zumindest erbrachten kurze Tests keine zufriedenstellenden Ergebnisse. Für weitere initiale LaTeX-Referenzen siehe: [1] [2].

photo
1

Besten Dank für Deine Ausführung.

Die Box für chemische Elemente hätte ich tatsächlich schon gebrauchen können. Mit Einschränkungen ging es dann mit TabellenText().

Beim 2. Beispiel geht es mir eigentlich eher um den Fliesstext. Ich gehe davon aus, dass auch dies (also ohne Initiale) in GGB nicht möglich ist (fehlendes lettrine-Paket).

photo
1

Fließtext in GGb würde ich über die tabular-Umgebung einrichten. Jedoch akzeptiert GGb die LaTeX-Syntax

\begin{tabular}{| c | c | C{5cm} |} a & b & c \\ \end{tabular}
nicht.

Eine Lösung über GGb könnte ich mir folgend vorstellen. Ein Text mit oder ohne Umbruchstellen wird hinterlegt. Weiter wird eine vorgegebene Zeichenbreite hinterlegt. Ein Skript (GGb oder JS) überprüft iterativ den Text und fügt an passenden Stellen Umbrüche ein. Dieser Modifizierte Text wird dann angezeigt.

photo
1

Schade.

Dein Lösungsvorschlag wurde im Forum vor längerer Zeit realisiert (möglicherweise vorn Dir).

PS: im alten Forum war ein Suchen mit entsprechenden Suchkriterien noch möglich.

photo
1

Frag den Internetspion Google der hat für mich etwas gefunden:https://help.geogebra.org/t...

photo
1

Im Anhang findest du zwei Prototypenlösungen. In der zweiten Version ist noch ein Logikfehler drin denn du ja suchen kannst oder auf Grundlage der ersten Datei eine eigene Lösung erdenken kannst (erste Datei autom. Umbrüche | zweite Datei autom. Umbrüche + berücks. von vorh. Umbrüchen).

Ich kann das aufgrund von Zeitmangel nicht weiter verfolgen.


Korigiere in beiden sind Logikfehler drin. Aber das Prinzip dürfte zielführend sein

photo
1

Danke Loco und rami für Eure Beitraäge. JA Loco, "zm Klicken" - nicht der der ganze umgebende Block soll

Klickempfindlich sein

photo
photo
1

"Zum Klicken" also. Und wenn du vom umgebenden Block schreibst meinst du da umgebenden Text oder einfach ein Rahmen der strukturiert?


Je nachdem könnte man unterschiedliche Lösungsvorschläge angeben. Ich gebe diese jetzt einfach einmal an und überlasse anderen die Umsetzung.

/wOyzEiQfbccmAAAAABJRU5ErkJggg==

  • Texte lassen sich aneinander hängen. Der Ankerpunkt der Texte ist dabei immer links oben. Und die Eckpunkte anderer Texte erhält man, , über Eckpunkt(<TXT>,<NR>). Wenn es dich also nicht stört, dass die Flächen nebeneinander statt übereinander liegen kannst du sie verketten und im nach hinein umrahmen.
    TXT1 = Text("\fcolorbox{black}{white}{-A-\\-B-\\-C-}", Eckpunkt(1, 4), false, true)
    TXT2 = Text("\fcolorbox{blue}{white}{-A-}", Eckpunkt(TXT1, 3), false, true)
    TXT3 = Text("\fcolorbox{red}{white}{-B-}", Eckpunkt(TXT2, 1), false, true)
    L = Polygonzug(Eckpunkt(TXT1, 1), (x(Eckpunkt(TXT2, 3)), y(Eckpunkt(TXT1, 1))), Eckpunkt(TXT2, 3), (x(Eckpunkt(TXT1, 1)), y(Eckpunkt(TXT2, 3))))
    Diese Methode hat ihre Nachteile da die Texte nicht absolut Positioniert werden können. Weiter scheint GGb neuerdings die Ankerpunkte etwas unzuverlässig zu setzen (siehe TXT2 und TXT3).
  • Durch das absolute Positionieren von Texten in Kombination mit der Layer-Eigenschaft kann man sich die Texte zurechtzupfen und dann fixieren. Dadurch lassen sich die Objekte nicht mehr verschieben aber trotzdem beklicken. Der Nachteil der der Absoluten Positionierung ist, dass sich alles nach der oberen linken Ecke richtet und nicht die relative Fensterlage o.ä. als Positionierung hernehmen kann. Daher muss dann alles was zu lesen sein muss oben rechts liegen da sonst die Gefahr besteht Es nicht mehr zu sehen.
  • Für absolute Nerds und wenn GGb eine Skript-Aktion "ermittle Position des Mauszeigers" bereitstellt: Textobjekt mit LaTeX-Tabellen erzeugen und die Flächen prozentual festlegen in welchen Aktionen ausgeführt werden sollen. Dann nach dem Klick über Klick-Position ausrechnen wo im Feld geklickt wurde und hinterlegtes Skript ausführen. Das dürfte nur in JS möglich sein.
  • Weiter lässt sich über Pixelwerte eine Festgelegtes Gitter aufbauen mit welchem sich Texte zoomunabhängig positionieren lassen.
    PpUX1 = x(Eckpunkt(1, 2) - Eckpunkt(1, 1)) / x(Eckpunkt(1, 5))
    PpUY1 = y(Eckpunkt(1, 4) - Eckpunkt(1, 1)) / y(Eckpunkt(1, 5))
    Zip(Text("A", A, false, true), A, Verbinde(Folge(Folge((PpUX1 k 50, PpUY1 j 50), k, 0, 4, 1), j, 0, 4, 1)))
    Auch hier gibt es Nachteile wie der Lag der beim Zoomen auftritt.
  • Übrigens bekomme ich keine Zirkeldefinition wenn ich die Texte relativ zueinander über deren Eckpunte positioniere.
    TXTA1 = "\fcolorbox{black}{white}{-A-}"TXTB1 = Text("\fcolorbox{black}{white}{\hphantom{-}B\hphantom{-}}", (Eckpunkt(TXTA1, 1)+Eckpunkt(TXTA1, 3))/2, false, true)
    Dies ist eine weitere Möglichkeit.
  • usw. ...

© 2020 International GeoGebra Institute