PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Beliebigen Text mit tief/hochgestellten Text direkt darunter/darüber?



Matrim
23-10-2005, 11:43
Hallo,

analog zu sowas wie Summenzeichen oder Integral usw. möchte ich ein beliebiges Symbol/beliebigen Text mit tief/hochgestellten Text derart haben, dass die Tief/Hochstellung direkt drüber/drunter ist:

Also statt:
$BaseObject_{subscript}^{superscript}$ was so aussieht:

..............superscript
BaseObject
...............subscript

haben, das so aussieht:

superscript
BaseObject
.subscript

Nur oben drüber was schreiben bekommt man ja mit \stackrel hin, aber drunter?

Danke für Hilfe,
Mat.

countbela666
23-10-2005, 16:57
Hallo Mat,

wenn du ein einziges bestimmtes Symbol mit hoch-/tiefgestellten Grenzen haben möchtest, das du häufig wiederverwendest, solltest du folgendes in der Dokumentation zum amsmath-Paket beschriebene Verfahren anwenden:

\usepackage{amsmath}
\DeclareMathOperator\mysym{... beliebiges Symbol ...}
\newcommand{\mysymbol}{\mysym\displaylimits}Den so definierten Befehl \mysymbol kannst du jetzt wie \sum o.ä. anwenden.

Wenn du allerdings ständig andere Symbole und/oder Text-Symbol-Gemische mit hoch- und tiefgestellten Grenzen in deinem Dokument verwenden möchtest, ist dieses Verfahren wenig sinnvoll, da du für jedes einzelne dieser von dir sogenannten BaseObjects einen anderen Befehl in der Präambel auf die beschriebene Art und Weise anlegen müsstest.
Mit ein wenig Hackerei ist dieses Problem umgehbar. Das folgende Minimalbeispiel stellt einen Befehl \BaseOp zur Verfügung, dem beliebiger Text übergeben werden kann, der dann mit hoch- und tiefgestellten Grenzen versehen werden kann. Dabei ist zu beachten, dass dem Befehl ein (beliebiger) Variablenname als optionaler Parameter übergeben werden muss, wenn das BaseObject Symbole oder Sonderzeichen enthält.

\documentclass{article}
\usepackage{amsmath,ifthen}
%%% neuer Befehl \DeclMathOp, der im Ggs. zu \DeclareMathOperator
%%% auch ausserhalb der Präambel verwendet werden kann
\makeatletter
\newcommand{\DeclMathOp}{%
\@ifstar{\@declmymathop m}{\@declmymathop o}}
\long\def\@declmymathop#1#2#3{%
\@ifdefinable{#2}{%
\DeclareRobustCommand{#2}{\qopname\newmcodes@#1{#3 }}}}
\makeatother
%%% Befehl \BaseOp zur Definition eines mathematischen Operators,
%%% der hoch- und tiefgestellte Grenzen annimmt
%%% optionaler Parameter: beliebiger Name des neuen Operators,
%%% falls dieser Sonderzeichen enthält
\providecommand{\BaseOp}[2][__empty__]{%
\ifthenelse{\equal{#1}{__empty__}}{%
\DeclMathOp{\m#2}{#2}%
\m#2\displaylimits%
}{%
\DeclMathOp{\m#1}{#2}%
\m#1\displaylimits%
}
}
%%%%%%%%% main %%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
% Verwendung mit einfachem Text
\[\BaseOp{bla}^{oben}_{unten} +
\BaseOp{blupp}^{oben}_{unten} -
\sum^{n}_{i=1} = \xi\]
% Verwendung mit Sonderzeichen
\[\BaseOp[varrho]{\varrho}^{oben}_{unten}\]
\[\BaseOp[xyz]{bla\ bla\ blupp\ \Sigma}^{oben}_{unten} -
\BaseOp[xyz]{hallo\ \pi}^{oben}_{unten}\]
\end{document}Ich betone noch einmal, dass die letzte Variante ein ganz schönes Gehacke darstellt, das von mir auch noch nicht in allen Variationen durchgetestet wurde, jedoch anscheinend den gewünschten Effekt erzielt. Es sollte wenn möglich die erste Variante vorgezogen werden. Weiterhin ist es natürlich auch sehr gut möglich, dass es eine einfachere Variante gibt, die ich übersehen habe.

Grüße,
Marcel

Matrim
23-10-2005, 23:07
Hi Marcel,

danke, es scheint zu klappen. Falls es doch einen einfacheren Weg gibt, so weiss ich ihn auch nicht.

LG, Mat.