folgendes Dokument druckt nicht zwei Pfeile, sondern in der
Mathe-Umgebung einen Doppelpunkt und nur im "Fließtext" einen Pfeil nach
rechts.
\documentclass{article}
\usepackage[debugshow]{tracefnt}
\usepackage{marvosym}
\begin{document}
$\Rightarrow$
\Rightarrow
\end{document}
ich würde gerne verstehen warum das so ist. Dass ein Doppelpunkt kommt
finde ich sogar noch einleuchtend, denn
$ cat /usr/share/texmf/tex/latex/misc/marvosym.sty
...
\def\mvchr{\mvs\char}
...
\def\Rightarrow{{\mvchr58}}
$ recode Apple-Mac..Latin-1 < /usr/share/texmf/fonts/type1/public/marvosym/marvosym.pfb | grep -a 58
dup 58 /colon put
dup 158 /c158 put
Nummer 58 ist also ein Doppelpunkt. Warum kommt aber im Textmodus doch
ein Pfeil nach rechts? Diverse Versuche mit \show, \tracing* und
tracefnt.sty haben mich nicht weitergebracht.
TIA, Frank
--
> But to have a secring.gpg on Google?
I guess this is the modern version of "real men just upload their
important stuff on ftp, and let the rest of the world mirror it."
[Jens Schmalzing on debian-devel]
Weil du im Mathemodus die Schrift nicht einfach per \usefont wechseln
kannst. Der Doppelpunkt kommt aus cmr.
An einem anderen Buchstaben ist es offensichtlicher
\documentclass{article}
\usepackage[debugshow]{tracefnt}
\show\Rightarrow
\usepackage{marvosym}
\show\Rightarrow
\show\mvs
\begin{document}
{\mvs\char106} $\mvs\char106$
\end{document}
Übrigens befindet sich kein Doppelpunkt bei 58 in fmvr8x. Das kannst du
einfach per nfssfont.tex testen.
--
Ulrike Fischer
e-mail: zusätzlich meinen Vornamen vor dem @ einfügen.
e-mail: add my first name between the news and the @.
> Weil du im Mathemodus die Schrift nicht einfach per \usefont wechseln
> kannst.
Wo kann ich denn nachlesen, wie es stattdessen geht (für einzelne
Zeichen)? source2e führt mich irgendwie nicht weiter, das font-Zeug
liegt mir zu fern.
> Der Doppelpunkt kommt aus cmr.
>
> An einem anderen Buchstaben ist es offensichtlicher
Für mich ist das leider nicht offensichtlich. Auch mit
\documentclass{article}
\usepackage[debugshow]{tracefnt}
\usepackage{marvosym}
\begin{document}
$\Rightarrow$
\end{document}
Wird einmal fmvr8x geladen - wieso, wenn es nicht verwendet wird?
> \documentclass{article}
> \usepackage[debugshow]{tracefnt}
> \show\Rightarrow
> \usepackage{marvosym}
> \show\Rightarrow
> \show\mvs
>
> \begin{document}
> {\mvs\char106} $\mvs\char106$
> \end{document}
Heisst das, dass im Mathemodus:
- \mvw unwirksam ist
- \char106 einfach den Glyphen 106 druckt, also nicht einen
Mathe-Glyphen?
Demnach wäre dann das Phänomen mit marvosym zu erklären, dass die
Definition nur im Textmodus funktioniert, während im Mathemodus \char58
aus dem Standardfont geladen wird, ja?
> Übrigens befindet sich kein Doppelpunkt bei 58 in fmvr8x. Das kannst du
> einfach per nfssfont.tex testen.
Heisst das, dass der Klartext-Teil marvosym.pfb nur schmückendes (und
auch noch falsches) Beiwerk ist?
Und vor allem: Wie müsste marvosym es denn richtig machen? Entweder so,
dass im Mathemodus nichts verändert wird, oder aber so, dass im
Mathemodus der marvosym-Glyph verwendet wird?
Gruß, Frank
> Ulrike Fischer <ne...@nililand.de> schrieb:
>
>> Weil du im Mathemodus die Schrift nicht einfach per \usefont wechseln
>> kannst.
>
> Wo kann ich denn nachlesen, wie es stattdessen geht (für einzelne
> Zeichen)? source2e führt mich irgendwie nicht weiter, das font-Zeug
> liegt mir zu fern.
LaTeX Companion 2ed.
> Für mich ist das leider nicht offensichtlich. Auch mit
>
> \documentclass{article}
> \usepackage[debugshow]{tracefnt}
> \usepackage{marvosym}
>
> \begin{document}
>
> $\Rightarrow$
>
> \end{document}
>
> Wird einmal fmvr8x geladen - wieso, wenn es nicht verwendet wird?
Wahrscheinlich weil \usefont ausgeführt wird. Aber dem steige ich jetzt
nicht nach.
>
> Heisst das, dass im Mathemodus:
>
> - \mvw unwirksam ist
Ja.
>
> - \char106 einfach den Glyphen 106 druckt, also nicht einen
> Mathe-Glyphen?
Nein. Es druckt ja einen Mathe-Glyphen nämlich das kursive j.
>
> Demnach wäre dann das Phänomen mit marvosym zu erklären, dass die
> Definition nur im Textmodus funktioniert, während im Mathemodus \char58
> aus dem Standardfont geladen wird, ja?
Ja. TeX macht einfach das, was es gemacht hätte, wenn dort einfach :
(58) oder j (106) gestanden hätte.
>
>> Übrigens befindet sich kein Doppelpunkt bei 58 in fmvr8x. Das kannst du
>> einfach per nfssfont.tex testen.
>
> Heisst das, dass der Klartext-Teil marvosym.pfb nur schmückendes (und
> auch noch falsches) Beiwerk ist?
Jein. Der Name "colon" verweist auf den Code für den Pfeil. Es ist bei
type1-Schriften relativ weit verbreitet, dass Symbole den Namen des
Zeichens bekommen, der üblicherweise in Textschriften an der Position
sind. Bei Schachschriften z.B. heißt der König "K" und die Dame "Q".
>
>
> Und vor allem: Wie müsste marvosym es denn richtig machen? Entweder so,
> dass im Mathemodus nichts verändert wird, oder aber so, dass im
> Mathemodus der marvosym-Glyph verwendet wird?
Also erst einmal sollte marvosym nicht einfach \Rightarrow
überschreiben.
Um den Pfeil im Mathemodus zu verwenden sollte, kann es sowas machen:
\documentclass{article}
\usepackage{marvosym}
\DeclareSymbolFont{mathmarvo}{OT1}{mvs}{m}{n}
\DeclareMathSymbol{\myRightarrow}{\mathrel}{mathmarvo}{58}
\begin{document}
$\myRightarrow$
\end{document}
> fr...@kuesterei.ch (Frank Küster) schrieb:
>
>> Ulrike Fischer <ne...@nililand.de> schrieb:
>>
>>> Weil du im Mathemodus die Schrift nicht einfach per \usefont wechseln
>>> kannst.
>>
>> Wo kann ich denn nachlesen, wie es stattdessen geht (für einzelne
>> Zeichen)? source2e führt mich irgendwie nicht weiter, das font-Zeug
>> liegt mir zu fern.
>
> LaTeX Companion 2ed.
Vielleicht sollte ich den mal aus den Umzugskisten suchen...
>> Demnach wäre dann das Phänomen mit marvosym zu erklären, dass die
>> Definition nur im Textmodus funktioniert, während im Mathemodus \char58
>> aus dem Standardfont geladen wird, ja?
>
> Ja. TeX macht einfach das, was es gemacht hätte, wenn dort einfach :
> (58) oder j (106) gestanden hätte.
Ja, stimmt - so ist es klar.
>>> Übrigens befindet sich kein Doppelpunkt bei 58 in fmvr8x. Das kannst du
>>> einfach per nfssfont.tex testen.
>>
>> Heisst das, dass der Klartext-Teil marvosym.pfb nur schmückendes (und
>> auch noch falsches) Beiwerk ist?
>
> Jein. Der Name "colon" verweist auf den Code für den Pfeil. Es ist bei
> type1-Schriften relativ weit verbreitet, dass Symbole den Namen des
> Zeichens bekommen, der üblicherweise in Textschriften an der Position
> sind. Bei Schachschriften z.B. heißt der König "K" und die Dame "Q".
Da wurden die slots aber nicht ganz zufällig gewählt...
>> Und vor allem: Wie müsste marvosym es denn richtig machen? Entweder so,
>> dass im Mathemodus nichts verändert wird, oder aber so, dass im
>> Mathemodus der marvosym-Glyph verwendet wird?
>
> Also erst einmal sollte marvosym nicht einfach \Rightarrow
> überschreiben.
Meine Rede...
> Um den Pfeil im Mathemodus zu verwenden sollte, kann es sowas machen:
>
> \documentclass{article}
> \usepackage{marvosym}
> \DeclareSymbolFont{mathmarvo}{OT1}{mvs}{m}{n}
> \DeclareMathSymbol{\myRightarrow}{\mathrel}{mathmarvo}{58}
Das sollte dann eigentlich eher in einem gefixten marvosym.sty so
stehen. Was wäre denn die korrekte Version für den Textmodus - spricht
irgendwas gegen
cat fixed_marvosym.sty
[...]
\DeclareSymbolFont{mathmarvo}{OT1}{mvs}{m}{n}
[...]
\checkcommand{\Rightarrow}{...}
\DeclareMathSymbol{\Rightarrow}{\mathrel}{mathmarvo}{58}
\renewcommand{\Rightarrow}{{\mvchr58}}
(mal abgesehen davon, dass ich die Gruppe ins \mvchr packen würde)?
>> Jein. Der Name "colon" verweist auf den Code für den Pfeil. Es ist bei
>> type1-Schriften relativ weit verbreitet, dass Symbole den Namen des
>> Zeichens bekommen, der üblicherweise in Textschriften an der Position
>> sind. Bei Schachschriften z.B. heißt der König "K" und die Dame "Q".
>
> Da wurden die slots aber nicht ganz zufällig gewählt...
Ja. Aber wenn es dann darum geht, einem weißen König auf weißen Feld,
einem schwarzen König auf weißen Feld usw Slots zuzuweisen, wird es
doch mehr oder weniger willkürlich. Da darf man einfach nicht zu viel
hineingeheimsen.
> Das sollte dann eigentlich eher in einem gefixten marvosym.sty so
> stehen. Was wäre denn die korrekte Version für den Textmodus - spricht
> irgendwas gegen
>
> cat fixed_marvosym.sty
> [...]
> \DeclareSymbolFont{mathmarvo}{OT1}{mvs}{m}{n}
> [...]
> \checkcommand{\Rightarrow}{...}
> \DeclareMathSymbol{\Rightarrow}{\mathrel}{mathmarvo}{58}
> \renewcommand{\Rightarrow}{{\mvchr58}}
>
> (mal abgesehen davon, dass ich die Gruppe ins \mvchr packen würde)?
Das funktioniert nicht, die zweite Definition \Rightarrow überschreibt
die erste. Wenn du einen Befehl im Text und im Mathemodus verwenden
willst, musst sowas machen wie
\newcommand\mysymbol{\ensuremath{\Rightarrow}}
oder
{\ifmath .... \else ....\fi}
> folgendes Dokument druckt nicht zwei Pfeile, sondern in der
> Mathe-Umgebung einen Doppelpunkt und nur im "Fließtext" einen Pfeil nach
> rechts.
>
> \documentclass{article}
> \usepackage[debugshow]{tracefnt}
> \usepackage{marvosym}
>
> \begin{document}
>
> $\Rightarrow$
>
> \Rightarrow
>
> \end{document}
>
> ich würde gerne verstehen warum das so ist.
Weil marvosym.sty seit Jahren einen einen Bug hat, und der
Autor ihn trotz Aufforderung nicht behebt.
Die Pfeile aus marvosym.sty sind _nicht_ zur Verwendung
im Mathematikmodus geeignet, weil sie in Aussehen und
Abmssungen nicht den übrigen mathematischen Symbolen
entsprechen.
marvosym.sty ändert aber einfach die Definition von
\Rightarrow dahingehend, dass es jetzt zwar im Textmodus
den Marvosym-Pfeil liefert, aber im Mathematikmodus
überhaupt nicht mehr funktioniert. D.h, man bekommt da
weder den Marvosym-Pfeil (was allerdings auch falsch wäre)
noch den korrekten Pfeil aus der Mathe-Schrift.
M.a.W. Der Befehlsname für den Marvosym-Pfeil sollte
nicht ausgerechnet \Rightarrow sein.
Abhilfe:
\let\ORGRightarrow=\Rightarrow
\usepackage{marvosym}
\let\Rightarrow=\ORGRightarrow
damit wenigstens der mathematische Pfeil noch so kommt,
wie er soll.
Und bitte tausend Beschwerden an den Autor von marvosym.sty!
Walter
> Weil marvosym.sty seit Jahren einen einen Bug hat, und der
> Autor ihn trotz Aufforderung nicht behebt.
Er hat mir zumindest versprochen, sich das Problem mal anzusehen. Daher
frage ich hier nach, um ihm konkrete Hilfen geben zu können.
> M.a.W. Der Befehlsname für den Marvosym-Pfeil sollte
> nicht ausgerechnet \Rightarrow sein.
>
> Abhilfe:
>
> \let\ORGRightarrow=\Rightarrow
> \usepackage{marvosym}
> \let\Rightarrow=\ORGRightarrow
>
> damit wenigstens der mathematische Pfeil noch so kommt,
> wie er soll.
Damit ist kann aber \Rightarrow nicht mehr im Textmodus verwendet
werden, oder? Falls er die Symbole nicht umbenennen will, würde dann so
etwas ohne Nebenwirkungen funktionieren:
\let\BaseRightarrow\Rightarrow
\renewcommand*{\Rightarrow}{%
\ifmmode\BaseRightarrow%
\else{\mvschr58}%
\fi%
}
TIA, Frank
P.S. Wo kommt eigentlich das \ifmath her, das Ulrike verwendet hat und
dass auch im Text von source2e einmal vorkommt? Eine TeX-Primitive nach
http://www.tug.org/utilities/plain/cseq.html ist es jedenfalls nicht.
> P.S. Wo kommt eigentlich das \ifmath her, das Ulrike verwendet hat und
> dass auch im Text von source2e einmal vorkommt? Eine TeX-Primitive nach
> http://www.tug.org/utilities/plain/cseq.html ist es jedenfalls nicht.
>
Das habe ich erfunden ;-). Ich meinte eigentlich \ifmmode.
korrekt
> Falls er die Symbole nicht umbenennen will,
das ist aber nicht zu vermeiden, s.u.
> würde dann so
> etwas ohne Nebenwirkungen funktionieren:
>
> \let\BaseRightarrow\Rightarrow
> \renewcommand*{\Rightarrow}{%
> \ifmmode\BaseRightarrow%
> \else{\mvschr58}%
> \fi%
> }
Nein.
Man würde man auf die Schauze fallen, wenn eine Mathe-Schrift
eine andere Codierung als CM hat und deshalb \Rightarrow erneut
umdefiniert werden müsste, etwa in einem Paket für diese
Mathe-Schrift. Dieses Paket weiß aber nichts von Marvosym.
Überdies würde ein \DeclareMathSymbol{\Rightarrow}{...} dann
sowieso fehlschlagen, denn \DeclareMathSymbol setzt voraus, dass
das betreffende Makro entweder noch undefiniert ist oder bereits
ein Mathematik-Symbol darstellt; andernfalls bekommt man einen
LaTeX-Fehler.
Mit anderen Worten: \Rightarrow _muss_ immer ein Mathe-Symbol
sein, und kein "normales" Makro.
Gruß
Walter
PS:
Wenn du möchtest, dann leite meine Antwort an den Autor von
marvosym.sty weiter.