Discussion:
Nochmal: Kapitälchen-Problem bei der Libertine
(zu alt für eine Antwort)
Christoph Stracke
2012-08-13 19:17:51 UTC
Permalink
Liebe TeXniker,

nachdem ich mein Problem mit den fehlenden Kapitälchen für
Sonderzeichen vom März inzwischen behoben habe (s.u.), tut sich sofort
ein neues auf:
Wenn ich Kapitälchen (vor allem in Überschriften) in Fettdruck setzen
will, werden einige selbst definierte Sonderzeichen nicht als
Kapitälchen, sondern weiterhin als Kleinbuchstaben gesetzt.

Hier mein Minimalbeispiel, das das Problem hoffentlich verdeutlicht.
(Leider ist es etwas länger geworden, da die Zeichendefinitionen ja mit
drin sind.)

----------------------schnipp-----------------
\documentclass{scrbook}
\usepackage{libertineotf}
\let\textsc\Lsmcp

% Chet (Bogen/Breve unter h):
\newcommand*{\chet}{\raisebox{.14ex}{%
\oalign{%
\raisebox{-.14ex}[0ex][-.2ex]{h}\crcr
\hidewidth
\vbox to .2ex{%
\hbox{%
\u{}%
}%
}%
\hidewidth
}%
}}

% g mit Dach:
\newcommand*{\gdach}{%
\kern.25ex\^{}{\kern-1.03ex g}%
}

% t mit Punkt darunter:
\newcommand*{\tunterpunkt}{%
\kern 1.1ex \d{}{\kern-1.07ex t}%
}

% s mit Punkt darunter:
\newcommand*{\sunterpunkt}{%
\kern .95ex \d{}{\kern-.95ex s}%
}

% Small Caps, benötigt für sumerisch:
\begingroup
\catcode`\ḫ=\active \catcode`\ĝ=\active
\catcode`\ṭ=\active \catcode`\ṣ=\active
\long\gdef\su{%
\bgroup
\catcode`\ḫ=\active \catcode`\ĝ=\active
\catcode`\ṭ=\active \catcode`\ṣ=\active
\setsu}
\gdef\setsu#1{\leavevmode%
\newcommand*ḫ{\chet}%
\newcommand*ĝ{\gdach}%
\newcommand*ṭ{\tunterpunkt}%
\newcommand*ṣ{\sunterpunkt}%
\textsc{#1}
\egroup}
\endgroup


\begin{document}
\noindent
Regular: abcĝḫṭṣ\\
\textit{kursiv: abcĝḫṭṣ}\\
\su{Kapitälchen: abcĝḫṭṣ}\\
\textbf{fett: abcĝḫṭṣ}\\
\textbf{\textit{fett kursiv: abcĝḫṭṣ}}\\
\textbf{\su{fette Kapitälchen: abcĝḫṭṣ}}\\
\section{Kapitälchen in der Überschrift: \protect\su{abcĝḫṭṣ}}
aber: \su{\textbf{abcĝḫṭṣ}}\\

\end{document}
--------------------schnapp-------------------

Man sieht, daß die vier letzten Buchstaben beim Versuch, fette
Kapitälchen zu erzeugen (wie es ja in der Überschrift auch geschieht),
nur als Kleinbuchstaben mit dem entsprechenden Akzent dargestellt
werden.

Wenn ich dagegen _zuerst_ den Befehl für Kapitälchen (hier "\su")
aufrufe und erst innerhalb der Umgebung auf Fett umschalte,
funktioniert es (siehe letztes Beispiel). Das bringt mir nur leider für
die Überschrift nichts.

Was mache ich falsch bzw. hat jemand eine Idee?

Vielen Dank
Christoph
Ulrike Fischer
2012-08-14 09:46:16 UTC
Permalink
Post by Christoph Stracke
Liebe TeXniker,
nachdem ich mein Problem mit den fehlenden Kapitälchen für
Sonderzeichen vom März inzwischen behoben habe (s.u.), tut sich sofort
Wenn ich Kapitälchen (vor allem in Überschriften) in Fettdruck setzen
will, werden einige selbst definierte Sonderzeichen nicht als
Kapitälchen, sondern weiterhin als Kleinbuchstaben gesetzt.
Hier mein Minimalbeispiel, das das Problem hoffentlich verdeutlicht.
(Leider ist es etwas länger geworden, da die Zeichendefinitionen ja mit
drin sind.)
Naja, du hättest ja einfach das Problem auf eines der Zeichen
reduzieren können.
Post by Christoph Stracke
Man sieht, daß die vier letzten Buchstaben beim Versuch, fette
Kapitälchen zu erzeugen (wie es ja in der Überschrift auch geschieht),
nur als Kleinbuchstaben mit dem entsprechenden Akzent dargestellt
werden.
Wenn ich dagegen _zuerst_ den Befehl für Kapitälchen (hier "\su")
aufrufe und erst innerhalb der Umgebung auf Fett umschalte,
funktioniert es (siehe letztes Beispiel). Das bringt mir nur leider für
die Überschrift nichts.
Was mache ich falsch bzw. hat jemand eine Idee?
Deine \catcode-Wechsel funktionieren nur so lange wie TeX die
Zeichen noch nicht gesehen hat.

Wenn du

\section{Kapitälchen in der Überschrift: \protect\su{abcĝḫṭṣ}}

aufrufst, dann sieht TeX das Argument, legt alle \catcodes fest und
\su kann daran nichts mehr ändern.

Was spricht dagegen, ĝḫṭṣ ein für alle mal zu aktivieren?
--
Ulrike Fischer
http://www.troubleshooting-tex.de/
Christoph Stracke
2012-08-14 10:40:38 UTC
Permalink
Post by Ulrike Fischer
Post by Christoph Stracke
Hier mein Minimalbeispiel, das das Problem hoffentlich verdeutlicht.
(Leider ist es etwas länger geworden, da die Zeichendefinitionen ja
mit drin sind.)
Naja, du hättest ja einfach das Problem auf eines der Zeichen
reduzieren können.
Das stimmt. Offensichtlicher Fall von Betriebsblindheit … ;-)
Post by Ulrike Fischer
Was spricht dagegen, ĝḫṭṣ ein für alle mal zu aktivieren?
Hm, auf die Idee bin ich noch gar nicht gekommen! – Funktioniert! :-)
Ich hatte wohl die Zeichen, die bereits nativ in der Schrift vorhanden
sind, soweit möglich nutzen wollen und mich darum nur auf die Lösung des
Problems mit den Kapitälchen konzentriert (und die Zeichen deshalb nur
dort aktivgeschaltet).

Danke, Dein Vorschlag bringt mich schon ein ganzes Stück weiter!

Es gibt jetzt nur noch ein Schönheitsproblem: Im Fettdruck sind die
Zeichen ja etwas breiter, so daß meine „Feinjustierung“ der Akzente
(insbesondere das Dach beim g) da nicht mehr so recht paßt. Gibt es die
Möglichkeit, hier eine Fallunterscheidung zu machen, ob an der Stelle,
wo ein selbstdefiniertes Zeichenmakro aufgerufen wird, gerade Fettdruck
herrscht oder nicht? – Also eine Art Analogon zum Aufruf

\ifdim\fontdimen1\font>0pt

den man oft zur Erkennung von Kursivfonts nutzt, nur eben für Fettdruck?

Viele Grüße
Christoph
Ulrike Fischer
2012-08-14 12:24:33 UTC
Permalink
Post by Christoph Stracke
Post by Ulrike Fischer
Was spricht dagegen, ĝḫṭṣ ein für alle mal zu aktivieren?
Hm, auf die Idee bin ich noch gar nicht gekommen! – Funktioniert! :-)
Ich hatte wohl die Zeichen, die bereits nativ in der Schrift vorhanden
sind, soweit möglich nutzen wollen und mich darum nur auf die Lösung des
Problems mit den Kapitälchen konzentriert (und die Zeichen deshalb nur
dort aktivgeschaltet).
Nun, du kannst ja außerhalb der Kapitälchen deine Zeichen auf sich
selbst definieren. Etwa so in der Art:

\documentclass{scrreprt}
\usepackage{fontspec}
\catcode`\ä\active

\defä{\string ä}
\def\test#1{{\defä{hallo}#1}}
\begin{document}

äöü \test{äöü}
\end{document}
Post by Christoph Stracke
Es gibt jetzt nur noch ein Schönheitsproblem: Im Fettdruck sind die
Zeichen ja etwas breiter, so daß meine „Feinjustierung“ der Akzente
(insbesondere das Dach beim g) da nicht mehr so recht paßt. Gibt es die
Möglichkeit, hier eine Fallunterscheidung zu machen, ob an der Stelle,
wo ein selbstdefiniertes Zeichenmakro aufgerufen wird, gerade Fettdruck
herrscht oder nicht?
Du kannst \***@series abfragen:

\documentclass{scrreprt}
\begin{document}
\makeatletter
normal: \***@series, fett: \bfseries \***@series
\end{document}

Aber ich würde eher dafür sorgen, dass der Befehl von vornherein die
"richtigen" schrift-/glyphabhängigen Werte benutzt. Z.B. in dem du
das Zeichen ausmisst. Ein Beispiel aus OT1enc.def:

\DeclareTextCompositeCommand{\r}{OT1}{A}

{\leavevmode\setbox\z@\hbox{!}\dimen@\ht\z@\advance\dimen@-1ex%

\rlap{\raise.67\dimen@\hbox{\char23}}A}
--
Ulrike Fischer
http://www.troubleshooting-tex.de/
Christoph Stracke
2012-08-14 16:49:25 UTC
Permalink
Post by Ulrike Fischer
Nun, du kannst ja außerhalb der Kapitälchen deine Zeichen auf sich
\documentclass{scrreprt}
\usepackage{fontspec}
\catcode`\ä\active
\defä{\string ä}
\def\test#1{{\defä{hallo}#1}}
\begin{document}
äöü \test{äöü}
\end{document}
Hallo Ulrike,

das ist natürlich insofern sehr elegant, daß ich dann die originalen
Zeichen verwenden kann, sofern es sie gibt. Super! :-)
Post by Ulrike Fischer
Post by Christoph Stracke
Es gibt jetzt nur noch ein Schönheitsproblem: Im Fettdruck sind die
Zeichen ja etwas breiter, so daß meine „Feinjustierung“ der Akzente
(insbesondere das Dach beim g) da nicht mehr so recht paßt. Gibt es
die Möglichkeit, hier eine Fallunterscheidung zu machen, ob an der
Stelle, wo ein selbstdefiniertes Zeichenmakro aufgerufen wird,
gerade Fettdruck herrscht oder nicht?
\documentclass{scrreprt}
\begin{document}
\makeatletter
\end{document}
Aber ich würde eher dafür sorgen, dass der Befehl von vornherein die
"richtigen" schrift-/glyphabhängigen Werte benutzt. Z.B. in dem du
\DeclareTextCompositeCommand{\r}{OT1}{A}
Hm, vor allem die zweitletzte Zeile ist die Form von Code, in die ich
mich – als „Nicht-Makro-Programmierer“ erstmal eine Zeitlang einlesen
muß. ;-) Aber schon beim ersten Versuch bin ich weiter als ich in den
letzten Tagen gekommen bin. Der Rest ist dann noch ein bißchen
„experimentelle Feintypografie“, wie ich die Akzente genau justiere
… :-)

Herzliche Grüße und ganz vielen Dank! :-)
Christoph
Christoph Stracke
2012-08-14 10:52:44 UTC
Permalink
Post by Ulrike Fischer
Was spricht dagegen, ĝḫṭṣ ein für alle mal zu aktivieren?
Achso, noch zwei Kleinigkeiten habe ich vergessen:
1. Gibt es eine Möglichkeit, darum herumzukommen, daß ich jetzt vor
jedem „ḫ“ (für die, die es nicht sehen können: „h“ mit Bogen darunter)
ein \protect in die Überschrift setzen muß? Das wäre eine große
Arbeitserleichterung, weil dieses Zeichen offensichtlich sehr häufig in
der Arbeit des Bekannten, dem ich gerade beim Satz helfe, auftaucht.

2. Jetzt ist der Text ja auch im „Normaltext“ nicht mehr im PDF
markierbar, da die Zeichen nun alle zusammengesetzt sind. Gibt es dazu
eine Lösung, oder muß man damit einfach leben (notfalls kann ich das)?

Viele Grüße
Christoph
Ulrich D i e z
2012-08-14 15:04:07 UTC
Permalink
Post by Christoph Stracke
Wenn ich Kapitälchen (vor allem in Überschriften) in Fettdruck setzen
will, werden einige selbst definierte Sonderzeichen nicht als
Kapitälchen, sondern weiterhin als Kleinbuchstaben gesetzt.
Hier mein Minimalbeispiel
[...]
Post by Christoph Stracke
----------------------schnipp-----------------
\documentclass{scrbook}
\usepackage{libertineotf}
\let\textsc\Lsmcp
Ich würde \chet, \gdach, \tunterpunkt und \sunterpunkt
robust machen, also per \DeclareRobustCommand
definieren, damit es - insbesondere mit dem \oalign
aus \chet - keine Probleme beim Schreiben in
externe Dateien (bspw toc oder aux) gibt, da hier
komplett expandiert wird und dann beim Schreiben
bspw #-Character verdoppelt werden, was beim
Einlesen der entstandenen aux- oder toc-Datei
Probleme macht.
Post by Christoph Stracke
\newcommand*{\chet}{\raisebox{.14ex}{%
\oalign{%
\raisebox{-.14ex}[0ex][-.2ex]{h}\crcr
\hidewidth
\vbox to .2ex{%
\hbox{%
\u{}%
}%
}%
\hidewidth
}%
}}
\newcommand*{\gdach}{%
\kern.25ex\^{}{\kern-1.03ex g}%
}
\newcommand*{\tunterpunkt}{%
\kern 1.1ex \d{}{\kern-1.07ex t}%
}
\newcommand*{\sunterpunkt}{%
\kern .95ex \d{}{\kern-.95ex s}%
}
Wenn schon, dann würde ich gleich eine Art Management
für spezielle Character implementieren, welches dazu
dient, zwei Makros zu verwalten, von denen das eine
alle speziellen Character aktiv macht und das andere
jedem speziellen Character das ihm zugedachte \meaning
zuweist.
Post by Christoph Stracke
\begingroup
\catcode`\ḫ=\active \catcode`\ĝ=\active
\catcode`\ṭ=\active \catcode`\ṣ=\active
\long\gdef\su{%
\bgroup
\catcode`\ḫ=\active \catcode`\ĝ=\active
\catcode`\ṭ=\active \catcode`\ṣ=\active
\setsu}
\gdef\setsu#1{\leavevmode%
\newcommand*ḫ{\chet}%
\newcommand*ĝ{\gdach}%
\newcommand*ṭ{\tunterpunkt}%
\newcommand*ṣ{\sunterpunkt}%
\textsc{#1}
\egroup}
\endgroup
\begin{document}
\noindent
Regular: abcĝḫṭṣ\\
\textit{kursiv: abcĝḫṭṣ}\\
\su{Kapitälchen: abcĝḫṭṣ}\\
\textbf{fett: abcĝḫṭṣ}\\
\textbf{\textit{fett kursiv: abcĝḫṭṣ}}\\
\textbf{\su{fette Kapitälchen: abcĝḫṭṣ}}\\
\section{Kapitälchen in der Überschrift: \protect\su{abcĝḫṭṣ}}
Für \textbf und \section wird natürlich das Argument
aus dem Quelltext eingelesen und getokenized
bevor \su zum Zuge kommt. D.h. die catcode-Änderungen,
die \su ausführt, wirken sich hier nicht mehr darauf aus, wie
bzw als was das jeweilige Argument von \su getokenized wird,
da es bereits getokenized ist wenn \su expandiert wird
und zwar als nicht-aktives Character-Token.

Eine Möglichkeit besteht darin, ein Makro zu basteln,
welches das Argument für \textbf bzw \ection mit den
Catcode-Einstellungen einliest, die für \su gelten
müssen, und dann dieses eingelesene Argument an
\textbf buw \section weiterreicht, wobei beim Weiterreichen
darauf geachtet werden muss, dass den aktiven
Character-Token auch das richtige \meaning zugewiesen
sein muss.

Es empfiehlt sich, auch gleich für den Fall "Benutzung von
hyperref" vorzuplanen und mit \texorpdfstring zu arbeiten,
da es Dinge gibt, mit denen pdf(Xe)(La)TeX nichts
anfangen kann, wenn Bookmarks für das pdf-file oder
dergleichen erzeugt werden sollen.

Wer nicht dauernd beim Verwenden \protect'en will,
kann es manchmal stattdessen beim Definieren mit
\DeclareRobustCommand versuchen.
Post by Christoph Stracke
aber: \su{\textbf{abcĝḫṭṣ}}\\
\end{document}
--------------------schnapp-------------------
Was mache ich falsch bzw. hat jemand eine Idee?
Ich habe hier sowohl am Eingabeeditor als auch bei
der Anzeige in meinem altmodischen E-Mailprogramm
insofern Probleme mit der Darstellung mancher utf8-Zeichen,
als mir dafür nur Viereckchen angezeigt werden.

Ausserdem habe ich hier grade nur teTeX von SuSE-Linux 6.1
und MiKTeX 2.4 jeweils von anno dazumal zur Verfügung
und kann nicht testen.

Ich habe also mal im "Blindflug" copy-paste betrieben (auch
wenn sie bei mir nicht ordentlich dargestellt werden, müssten
die entsprechenden Bytes ja da sein und ich darf bloss nicht
durcheinandergommen bei der Frage, welches Viereckchen
gerade welches Byte darstellt...) und geTeXt und hoffe,
dass die von mir produzierten Dinge bei Dir richtig funktionieren.

Ulrich




\documentclass{scrbook}
\usepackage{libertineotf}
\usepackage{lipsum}
\usepackage{hyperref}
\let\textsc\Lsmcp


%% Auf hyperref prüfen und ggf \texorpdfstring selbst
%% definieren:
\makeatletter
\AtBeginDocument{%
\@ifpackageloaded{hyperref}{}{%
\newcommand\texorpdfstring[2]{#1}%
}%
}%
\makeatother

%%\chet, \gdach, \tunterpunkt, \sunterpunkt _robust_
%% machen, damit sie beim Expandieren im Zuge des
%% Schreibens von auc-file und toc-file etc nicht
%% expandiert werden. \oalign und Konsorten würden
%% ansonsten auch beim Schreiben expandiert werden,
%% was eine Verdoppelung der sich dabei eregebenden
%% #-Character zur Folge hätte, was beim Einlesen von
%% toc und aux-Probleme mit sich bringen würde:

% Chet (Bogen/Breve unter h):
\DeclareRobustCommand*{\chet}{%
\texorpdfstring{%
\raisebox{.14ex}{%
\oalign{%
\raisebox{-.14ex}[0ex][-.2ex]{h}\crcr
\hidewidth
\vbox to .2ex{\hbox{\u{}}}%
\hidewidth
}%
}%
}{ḫ}%
}%

% g mit Dach:
\DeclareRobustCommand*{\gdach}{%
\texorpdfstring{\kern.25ex\^{}{\kern-1.03ex g}}{ĝ}%
}

% t mit Punkt darunter:
\DeclareRobustCommand*{\tunterpunkt}{%
\texorpdfstring{\kern 1.1ex \d{}{\kern-1.07ex t}}{ṭ}%
}

% s mit Punkt darunter:
\DeclareRobustCommand*{\sunterpunkt}{%
\texorpdfstring{\kern .95ex \d{}{\kern-.95ex s}}{ṣ}%
}


\makeatletter
%% Verwaltung eigener Special Character:
%% ---------------------------------------------
%%
%% Das Makro \MakeChristophStrackeSpecialsActive macht alle
%% speziellen Character aktiv.
%% Das Makro \SetChristophStrackeActiveSpecialsMeanings weist
%% jedem dieser speziellen Character das ihm zugedachte \meaning
%% zu.
%%
%% Das Makro \SetChristophStrackeSpecial nimmt als erstes
%% Argument ein Character-Token und fügt
%% - erstens dem Makro\MakeChristophStrackeSpecialsActive die
%% Anweisung hinzu, diesen Character aktiv zu machen
%% - und zweitens dem Makro
%% \SetChristophStrackeActiveSpecialsMeanings die Anweisung
%% hinzu, dem entsprechenden aktiven Character per
%% \newcommand* das zweite Argument als \meaning zuzuweisen.
\newcommand*\MakeChristophStrackeSpecialsActive{}%
\newcommand*\SetChristophStrackeActiveSpecialsMeanings{}%
\newcommand\SetChristophStrackeSpecial[1]{%
\expandafter\@SetChristophStrackeSpecial
\expandafter{\csname\noexpand#1\endcsname}%
}
\newcommand\@SetChristophStrackeSpecial[1]{%
\***@addto@macro\MakeChristophStrackeSpecialsActive{%
\catcode`#1=\active
}%
\begingroup
\lccode`~=`#1\relax
\lowercase{\endgroup\@@SetChristophStrackeSpecial{~}}%
}%
\newcommand\@@SetChristophStrackeSpecial[2]{%
\***@addto@macro\SetChristophStrackeActiveSpecialsMeanings{%
\newcommand*#1{#2}%
}%
}

%% \ReadChristophStrackeSpecialized liest das zweite Argument
%% unter den Special-Catcode-Bedingung ein sofern es noch aus der
%% Eingabedatei gelesen und getokenized werden muss und nicht
%% als bereits getokenizedter Definitonstext und auch nicht als
%% bereits getokenizedtes Makroargument "zugereicht" wird
%% und reicht es dann in geschweifte Klammern eingefasst an das
%% erste Argument weiter und packt das so entstandene
%% Konstrukt in ein paar geschweifte Klammern innerhab derer
%% die \meanings der speziellen Character gesetzt sind.
\newcommand\ReadChristophStrackeSpecialized[1]{%
\begingroup
\MakeChristophStrackeSpecialsActive
\@ReadChristophStrackeSpecialized{#1}%
}%
\newcommand\@ReadChristophStrackeSpecialized[2]{%
\endgroup{\SetChristophStrackeActiveSpecialsMeanings#1{#2}}%
}%
\makeatother

\SetChristophStrackeSpecial{ḫ}{\chet}%
\SetChristophStrackeSpecial{ĝ}{\gdach}%
\SetChristophStrackeSpecial{ṭ}{\tunterpunkt}%
\SetChristophStrackeSpecial{ṣ}{\sunterpunkt}%


% Small Caps, benötigt für sumerisch:
\DeclareRobustCommand*\su{%
\texorpdfstring{%
\ReadChristophStrackeSpecialized{\leavevmode\textsc}%
}{}%
}

\pagestyle{headings}
\begin{document}
\tableofcontents
\noindent
Regular: abcĝḫṭṣ\\
\textit{kursiv: abcĝḫṭṣ}\\
\su{Kapitälchen: abcĝḫṭṣ}\\
\textbf{fett: abcĝḫṭṣ}\\
\textbf{\textit{fett kursiv: abcĝḫṭṣ}}\\
\ReadChristophStrackeSpecialized{\textbf}{%
\su{fette Kapitälchen: abcĝḫṭṣ}%
}\\
\ReadChristophStrackeSpecialized{\chapter}{%
Kapitälchen in der Überschrift: \su{abcĝḫṭṣ}%
}
aber: \su{\textbf{abcĝḫṭṣ}}\\
\lipsum[1-14] % Mehrere Seiten, um zu sehen, was
% in den headings passiert
\end{document}
Christoph Stracke
2012-08-14 17:21:38 UTC
Permalink
Post by Ulrich D i e z
Post by Christoph Stracke
Wenn ich Kapitälchen (vor allem in Überschriften) in Fettdruck
setzen will, werden einige selbst definierte Sonderzeichen nicht als
Kapitälchen, sondern weiterhin als Kleinbuchstaben gesetzt.
[...]
Wenn schon, dann würde ich gleich eine Art Management
für spezielle Character implementieren, welches dazu
dient, zwei Makros zu verwalten, von denen das eine
alle speziellen Character aktiv macht und das andere
jedem speziellen Character das ihm zugedachte \meaning
zuweist.
Eine Möglichkeit besteht darin, ein Makro zu basteln,
welches das Argument für \textbf bzw \ection mit den
Catcode-Einstellungen einliest, die für \su gelten
müssen, und dann dieses eingelesene Argument an
\textbf buw \section weiterreicht, wobei beim Weiterreichen
darauf geachtet werden muss, dass den aktiven
Character-Token auch das richtige \meaning zugewiesen
sein muss.
Es empfiehlt sich, auch gleich für den Fall "Benutzung von
hyperref" vorzuplanen und mit \texorpdfstring zu arbeiten,
da es Dinge gibt, mit denen pdf(Xe)(La)TeX nichts
anfangen kann, wenn Bookmarks für das pdf-file oder
dergleichen erzeugt werden sollen.
Wer nicht dauernd beim Verwenden \protect'en will,
kann es manchmal stattdessen beim Definieren mit
\DeclareRobustCommand versuchen.
Ich habe hier sowohl am Eingabeeditor als auch bei
der Anzeige in meinem altmodischen E-Mailprogramm
insofern Probleme mit der Darstellung mancher utf8-Zeichen,
als mir dafür nur Viereckchen angezeigt werden.
Ich habe also mal im "Blindflug" copy-paste betrieben (auch
wenn sie bei mir nicht ordentlich dargestellt werden, müssten
die entsprechenden Bytes ja da sein und ich darf bloss nicht
durcheinandergommen bei der Frage, welches Viereckchen
gerade welches Byte darstellt...) und geTeXt und hoffe,
dass die von mir produzierten Dinge bei Dir richtig funktionieren.
Ulrich
[Umfangreiches Minimalbeispiel …]
Hallo Ulrich,

an hyperref hatte ich ja (noch) gar nicht gedacht! Ich bin sprachlos
über die Arbeit, die Du Dir gemacht hast (noch dazu offensichtlich ohne
die entsprechenden Symbole sehen zu können!) – vielen herzlichen Dank
dafür!
Wobei ich ja ursprünglich schon gedacht hatte, daß sich die Sache mit
dem \protect nach Ulrikes Tips erledigt hätte, da es nun auf einmal
keine Fehlermeldung mehr gab, aber Du hast mich glücklicherweise auf
die Sache mit den toc- und aux-Dateien aufmerksam gemacht, denn bei den
sprechenden Kolumnentiteln (KURSIVE Kapitälchen …) tauchte das Problem
nun mit meinem Ansatz tatsächlich wieder auf – mit Deiner Lösung
dagegen nicht! :-)
Du hast mir ja mit Deiner Lösung nun erstmal einiges an „Hausaufgaben“
mitgegeben, die ich erstmal verdauen und nachvollziehen muß – da werde
ich mich bei der nächsten Gelegenheit wohl mal hinsetzen und versuchen,
aus Deinen und Ulrikes Vorschlägen eine möglichst übersichtliche und
funktionierende .sty-Datei zusammenzubasteln …

Ganz herzliche Grüße – was wäre ich nur ohne diese Usenet-Gruppe?! :-))
Christoph
Ulrich D i e z
2012-08-14 18:02:23 UTC
Permalink
Post by Christoph Stracke
Ich bin sprachlos
über die Arbeit, die Du Dir gemacht hast
Ich habe das jetzt weniger als Arbeit empfunden und mehr
als ein entspannendes Kreuzworträtsel. Mir ist nur nicht ganz
wohl, weil ich grade kein XeLaTeX habe, mit dem ich testen
könnte, und ich habe sehr gezögert, ohne Test zu posten,
da das bei mir meistens in die Hose geht.

Wenn bei meinem Code irgendwas nicht funktioniert/wenns
irgendwo Fehlermeldungen gibt, bin ich also für entsprechende
Hinweise dankbar.
Post by Christoph Stracke
Du hast mir ja mit Deiner Lösung nun erstmal einiges an „Hausaufgaben“
mitgegeben, die ich erstmal verdauen und nachvollziehen muß
Meiner Erfahrung nach helfen Dir die Leute in dieser
Newsgroup und in comp.text.tex gerne beim
"Hausaufgaben machen" bzw beim "Verdauen".

Vielleicht gibt die eine oder der andere auch noch
Tips/Hinweise, wie man den von mir gelieferten Code
verbessern kann, oder wie man von vorneherein ein
besseres Konzept aufziehen kann.

In der Regel rufe ich den im From-Header meiner
Postings angegebenen E-Mailaccount täglich ab
- hauptsächlich, um zu prüfen, ob der Spam auch schön
automatisch gelöscht wird...
Sofern Du Fragen zu meinem Code oder den Kommentaren
hast, die Deiner Meinung nach zwar für Dich interessant, aber
für die Newsgroup uninteressant sind, kannst Du mich auch
gerne auf meiner Adresse für frohe Botschaften anmailen.

Ulrich
Bernhard Tempel
2012-08-14 18:28:34 UTC
Permalink
Post by Ulrich D i e z
Mir ist nur nicht ganz
wohl, weil ich grade kein XeLaTeX habe, mit dem ich testen
könnte, und ich habe sehr gezögert, ohne Test zu posten,
da das bei mir meistens in die Hose geht.
Ich habe zwar nicht den ganzen Faden verfolgt, das Beispiel aber mal mit
XeLaTeX durchlaufen lassen: Funktioniert tadellos, und auch das Ergebnis sieht
gut aus.

Viele Grüße

Bernhard
--
http://www.tempelb.de
Ulrich D i e z
2012-08-15 08:05:54 UTC
Permalink
Post by Bernhard Tempel
Ich habe zwar nicht den ganzen Faden verfolgt, das Beispiel aber mal mit
XeLaTeX durchlaufen lassen: Funktioniert tadellos, und auch das Ergebnis sieht
gut aus.
Besten Dank, das ist mir eine Beruhigung.

Nachdem ich nun den ganzen Thread nochmal gelesen
habe, vermute ich allerdings, dass an der Ausrichtung
der - ich nenne es mal - Akzente bei kursiven (italics) oder
geneigten (slanted) Schriftstilen noch gefeilt werden
muss, weil man sie da nicht einfach (in Relation zum
Buchstaben, zu dem sie gehören,) horizontal mittig setzen
kann, sondern - entsprechend dem Neigungswinkel der
Buchstaben in der jew. Schrift - Akzente, die unter dem
restlichen Buchstaben stehen (also die Punkte und den
Bogen) ein bisschen weiter links und Akzente, die über
dem restlichen Buchstaben stehen (also das Dach)
ein bisschen weiter rechts platzieren sollte.

Je nachdem, was für Font-Bearbeitungssoftware man hat
- ich kenne vor allem MetaFont und pfaEdit/FontForge -
ist es auf Dauer vielleicht einfacher, die fehlenden
SmallCaps-Glyphen als eigene Schriftart zu konzipieren...

Ich müsste mich da aber erst wieder einlesen, denn das
letzte mal habe ich so etwas vor über zehn Jahren gemacht.
Und damals ging es auch nicht wirklich um Buchstaben,
sondern ich habe MetaFont missbraucht, um Bildchen
in Schwarz/Weiss zu basteln, die ich in ein- und demselben
Dokument immer wieder gebraucht habe, von denen
dann jedes als ein Zeichen einer selbstgebastelten
Schrift behandelt worden ist, was die Grösse der
entstehenden pdf-Datei damals enorm verringert hat,
da Schriftarten nur einmal ins pdf-file eingebettet werden,
ein Bildchen, welches mehrmals per \includegraphics
eingebunden wird, aber auch mehrmals ins pdf-File
eingebettet wird...

Ulrich
Ulrich D i e z
2012-08-15 07:27:55 UTC
Permalink
Ich schrieb:

[...]
Post by Ulrich D i e z
Post by Christoph Stracke
\textbf{\su{fette Kapitälchen: abcĝḫṭṣ}}\\
\section{Kapitälchen in der Überschrift: \protect\su{abcĝḫṭṣ}}
Für \textbf und \section wird natürlich das Argument
aus dem Quelltext eingelesen und getokenized
bevor \su zum Zuge kommt. D.h. die catcode-Änderungen,
die \su ausführt, wirken sich hier nicht mehr darauf aus, wie
bzw als was das jeweilige Argument von \su getokenized wird,
da es bereits getokenized ist wenn \su expandiert wird
und zwar als nicht-aktives Character-Token.
Das sollte besser heissen:

da es bereits getokenized ist wenn \su expandiert wird
und zwar als Ansammlung von nicht-aktiven Character-Token.

Ulrich
Christoph Stracke
2012-08-15 08:55:12 UTC
Permalink
Post by Ulrich D i e z
Post by Ulrich D i e z
Für \textbf und \section wird natürlich das Argument
aus dem Quelltext eingelesen und getokenized
bevor \su zum Zuge kommt. D.h. die catcode-Änderungen,
die \su ausführt, wirken sich hier nicht mehr darauf aus, wie
bzw als was das jeweilige Argument von \su getokenized wird,
da es bereits getokenized ist wenn \su expandiert wird
und zwar als nicht-aktives Character-Token.
da es bereits getokenized ist wenn \su expandiert wird
und zwar als Ansammlung von nicht-aktiven Character-Token.
Hallo Ulrich,

gerade der Ersatz von \textbf, \section usw. im Dokumenten-Hauptteil
bereitet mir allerdings, je länger ich mich damit beschäftige,
zunehmend Bauchschmerzen. Ich suche ja eigentlich nach einer Lösung,
die diese Aufrufe „transparent durchreicht“ und keine Änderungen im
(bereits weitgehend vorhandenen) Dokument mehr nötig macht: Es geht um
eine Arbeit, die derzeit ca. 1.500 Seiten umfaßt und erst später gekürzt
werden soll; dazu gibt es noch eine nicht ganz klare Anzahl weiterer
Dokumente, für die die Definitionen später ebenfalls als *.sty
verfügbar sein sollten, da die genannten Kapitälchen dort derzeit nicht
wie gewünscht dargestellt werden. (Es handelt sich um die
Promotionsschrift eines Bekannten, dem ich seit einigen Monaten beim
Setzen helfe.)

Darum denke ich inzwischen, daß in diesem Fall doch der Ansatz von
Ulrike einfacher zu realisieren wäre, d.h. die betroffenen (zahlenmäßig
ja sehr begrenzten) Zeichen ein- für allemal als „aktiv“ zu
kennzeichnen, diese anschließend für die Teile, in denen die Glyphen
nativ in der Schrift verfügbar sind, auf sich selbst zu definieren und
nur in den Bereichen, in denen die entsprechenden Kapitälchen fehlen,
diese selbst zusammenzubauen (und zwar gemäß Deinem Vorschlag als
robustes Kommando).

Damit war ich ja (bis auf die Feinjustierung einzelner Akzente bei den
selbst zusammengebastelten Zeichen) bereits recht kurz vorm Ziel –
nicht berücksichtigt wäre dabei allerdings die von Dir vorgeschlagene
hyperref-Implementierung und die korrekt dargestellten lebendigen
Kolumnentitel, auf deren Problem Du mich mit Deinem Vorschlag erst
gebracht hast (da sie bei Deiner Umsetzung richtig dargestellt werden,
in meiner bisherigen aber nicht). Aber damit könnte der Schreiber der
Arbeit vermutlich leben; notfalls muß man dann eben die wenigen
betroffenen Einträge manuell mit \markleft bzw. \markright so
nachbearbeiten, daß an diesen Stellen keine altsprachlichen Zitate
stehen (denn um diese zu kennzeichnen, wird in dem Text Kursiv- bzw.
Kapitälchenschrift verwendet).
Das ist zwar weniger strukturiert und eher „quick & dirty“ als der
„Rundumschlag“, wie Du ihn gestern erstellt hast, aber dafür vermutlich
für mich einfacher umzusetzen … :-)

Liebe Grüße
Christoph
Christoph Stracke
2012-08-15 20:13:18 UTC
Permalink
Post by Christoph Stracke
Liebe TeXniker,
Wenn ich Kapitälchen (vor allem in Überschriften) in Fettdruck setzen
will, werden einige selbst definierte Sonderzeichen nicht als
Kapitälchen, sondern weiterhin als Kleinbuchstaben gesetzt.
So, hier nun meine soweit funktionierende Datei, die ich aus den
Lösungsvorschlägen von Ulrike und Ulrich zusammengebastelt habe;
vielleicht steht ja mal jemand vor einem ähnlichen Problem und kann
es brauchen …
Leider ist sie zwar längst nicht so strukturiert wie die schöne Lösung
von Ulrich, aber dafür kann ich die „normalen“
LaTeX-Formatieranweisungen weitestgehend beibehalten.
Die ziemlich kruden Zeichendefinitionen bitte ich zu entschuldigen – es
ist eben (trotz aller Hilfe) ein mit viel Versuch und Irrtum
entstandener, laienhafter „dirty Hack“. ;-)

-------------schnipp------------------
\documentclass{scrbook}
\usepackage[german]{babel}
\usepackage{libertineotf}
\let\textsc\Lsmcp
\usepackage{xltxtra}
\usepackage{lipsum}
\setkomafont{sectioning}{\addfontfeature{Letters=SmallCaps} \bfseries
\rmfamily} \setkomafont{pagehead}{\itshape}

% Sonderzeichen aktivieren und für Normaltext
% auf sich selbst definieren:
\catcode`\ḫ=\active \catcode`\ĝ=\active
\catcode`\ṭ=\active \catcode`\ṣ=\active
\defḫ{\string ḫ}
\defĝ{\string ĝ}
\defṭ{\string ṭ}
\defṣ{\string ṣ}

% Chet (Bogen/Breve unter h):
\DeclareRobustCommand*{\chet}{\raisebox{.14ex}{%
\oalign{%
\raisebox{-.14ex}[0ex][-.2ex]{h}\crcr
\hidewidth
\vbox to .2ex{%
\hbox{%
% Die folgende Unterscheidung funktioniert leider nicht
% bei slanted, sondern nur bei kursiv:
\ifdim\fontdimen1\font>0pt %
\kern-.6ex %
\fi
\u{}%
}%
}%
\hidewidth
}%
}}

\makeatletter
\DeclareTextCompositeCommand{\^}{EU1}{g}
{\leavevmode\setbox\z@\hbox{!}\dimen@\ht\z@\advance\dimen@-1.5ex%
\rlap{\raise.45\dimen@\hbox{\kern.265ex\^{}}}g}

% t mit Punkt darunter:
\DeclareTextCompositeCommand{\d}{EU1}{t}
{\if\***@series m %
\kern .5ex \d{}%
\kern-1.1ex%
\else
\kern 1.2ex \d{}%
\kern-1.2ex%
\fi%
t}%

% s mit Punkt darunter:
\DeclareTextCompositeCommand{\d}{EU1}{s}
{\if\***@series m %
\kern .5ex \d{}%
\kern-1ex%
\else
\kern 1ex \d{}%
\kern-1ex%
\fi%
s}%
\makeatother

% sumerisch: Small Caps
\DeclareRobustCommand{\su}[1]{{\leavevmode%
\newcommand*ḫ{\chet}%
\newcommand*ĝ{\^g}%
\newcommand*ṭ{\d t}%
\newcommand*ṣ{\d s}%
\textsc{#1}
}}

\begin{document}
\tableofcontents
\newpage

\noindent
Regular: abcĝḫṭṣ\\
\textit{kursiv: abcĝḫṭṣ}\\
\su{Kapitälchen: abcĝḫṭṣ}\\
Regular: abcĝḫṭṣ\\
\textbf{fett: abcĝḫṭṣ}\\
\textbf{\textit{fett kursiv: abcĝḫṭṣ}}\\
\textbf{fette \su{Kapitälchen: abcĝḫṭṣ}}\\
\textsl{geneigte \su{Kapitälchen: abcĝḫṭṣ}}\\
\textit{kursive \su{Kapitälchen: abcĝḫṭṣ}}\\
\section{Kapitälchen in der Überschrift: %
% Leider kann man hier die Sonderzeichen nicht direkt aufrufen,
% da sie sonst nicht korrekt in den Kopfzeilen erscheinen:
\su{abcĝḫṭṣ\^g\chet\d{t}\d{s}}%
}
\lipsum[1-6]

\end{document}
------------------schnapp---------------
Ulrich D i e z
2012-08-15 23:41:58 UTC
Permalink
Post by Christoph Stracke
So, hier nun meine soweit funktionierende Datei, die ich aus den
Lösungsvorschlägen von Ulrike und Ulrich zusammengebastelt habe;
[...]
Post by Christoph Stracke
% Leider kann man hier die Sonderzeichen nicht direkt aufrufen,
Hallo,

habe mir erlaubt, ein paar Änderungen an Deinem Code vorzunehmen,
um folgende Dinge zu erreichen:

Erstens sollen beim "auf sich selbst definieren" keine catcode12-
character (other) ausgespuckt werden (\string liefert catcode-12-
character und ggf Space-Token), sondern catcode-11-character
(letter).

Zweitens sollten die auf sich selbst definierten Character
"robust" sein, d.h. in sogenannten "moving-Arguments" entweder
bleiben was sie sind oder nach Expansion wieder sich selbst
ergeben, sodass man da am Ende wieder den unexpandierten _aktiven
Character_ hat und kein letter/other-Character-Token.
Dann werden die aktiven Character nämlich nicht zur Unzeit
expandiert und es klappt (hoffentlich) auch in den running
headers.
Kurz gesagt ist es nämlich so: \su ist robust, dann müssen die
aktiven Character, die von \su umdefiniert werden und in seinem
Argument auftauchen können, auch robust sein. Damit nicht
passieren kann, dass sie zu einer Zeit, zu der Dank der
Robustheit das Expandieren von \su verhindert wird, doch
expandiert werden und dann zwar nämlich mit dem \meaning, das
sie "normalerweise" haben wenn sie nicht durch \su umdefiniert
sind...

Drittens habe ich hier und da ein \texorpdfstring eingefügt,
damit es auch mit den Bookmarks etc einigermassen klappt.
(Innerhalb Deines \su-Makro wird bei pdf-Strings jetzt der
\textsc-Aufruf, der da nicht erlaubt ist, ignoriert und durch
\@firstofone ersetzt. Ausserdem ergeben in pdf-Strings Deine
TextCompositeCommands wieder das nicht-zusammengesetzte
kleingeschriebene entsprechende Unicode-Zeichen, denn
Unicode-Zeichen dürfen in pdf-Strings wenn die pdf-Datei
selbst in unicode ist...)

Das Problem ist nur, dass ich hier grade mal wieder vor den
selben alten Rechnern sitze wie gestern und wieder nicht testen
kann. (Es muss unbedingt mal ein Smartphone mit TeXLive und nem
netten Editor her...)

Kannst Du (oder sonst jemand) mir sagen, ob der Code jetzt noch
fehlerfrei durchläuft und dabei macht was er soll?

Ulrich



\documentclass{scrbook}
\usepackage[german]{babel}
\usepackage{libertineotf}
\usepackage{hyperref}
\begingroup
\makeatletter
\@firstofone{%
\endgroup
\@ifpackageloaded{hyperref}{}{%
\newcommand\texorpdfstring[2]{#1}%
}%
}%
\let\textsc\Lsmcp
\usepackage{xltxtra}
\usepackage{lipsum}
\setkomafont{sectioning}{%
\addfontfeature{Letters=SmallCaps}%
\bfseries\rmfamily
}
\setkomafont{pagehead}{\itshape}

\makeatletter
% Makro, um Sonderzeichen zu aktivieren und für Normaltext
% _robust_ "auf sich selbst" zu definieren:
\newcommand\AktiviereSonderzeichenRobustAufSichSelbst[1]{%
\begingroup
\lccode`~=\expandafter`\csname\string#1\endcsname\relax
\lowercase{%
\endgroup
\@AktiviereSonderzeichenRobustAufSichSelbst{~}%
}{#1}%
}%
\newcommand\@AktiviereSonderzeichenRobustAufSichSelbst[2]{%
\catcode\expandafter`\csname\string#2\endcsname=\active
\newcommand#1{%
\ifx\protect\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi{#2}{%
\ifx\protext\string
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi{\string}{\noexpand}#1%
}%
}%
}%
\makeatother
\AktiviereSonderzeichenRobustAufSichSelbst{ḫ}
\AktiviereSonderzeichenRobustAufSichSelbst{ĝ}
\AktiviereSonderzeichenRobustAufSichSelbst{ṭ}
\AktiviereSonderzeichenRobustAufSichSelbst{ṣ}


% Chet (Bogen/Breve unter h):
\DeclareRobustCommand*{\chet}{%
\texorpdfstring{%
\raisebox{.14ex}{%
\oalign{%
\raisebox{-.14ex}[0ex][-.2ex]{h}\crcr
\hidewidth
\vbox to .2ex{%
\hbox{%
% Die folgende Unterscheidung funktioniert leider nicht
% bei slanted, sondern nur bei kursiv:
\ifdim\fontdimen1\font>0pt %
\kern-.6ex %
\fi
\u{}%
}%
}%
\hidewidth
}}}{ḫ}%
}

\makeatletter
\DeclareTextCompositeCommand{\^}{EU1}{g}{%
\texorpdfstring{%
\leavevmode
\setbox\z@\hbox{!}%
\dimen@\ht\z@
\advance\dimen@-1.5ex%
\rlap{\raise.45\dimen@\hbox{\kern.265ex\^{}}}g%
}{ĝ}%
}

% t mit Punkt darunter:
\DeclareTextCompositeCommand{\d}{EU1}{t}{%
\texorpdfstring{%
\if\***@series m %
\kern .5ex \d{}%
\kern-1.1ex%
\else
\kern 1.2ex \d{}%
\kern-1.2ex%
\fi t%
}{ṭ}%
}%

% s mit Punkt darunter:
\DeclareTextCompositeCommand{\d}{EU1}{s}{%
\texorpdfstring{%
\if\***@series m %
\kern .5ex \d{}%
\kern-1ex%
\else
\kern 1ex \d{}%
\kern-1ex%
\fi s%
}{ṣ}%
}%

% sumerisch: Small Caps
\DeclareRobustCommand{\su}[1]{{%
\texorpdfstring{%
\leavevmode
\newcommand*ḫ{\chet}%
\newcommand*ĝ{\^g}%
\newcommand*ṭ{\d t}%
\newcommand*ṣ{\d s}%
\textsc
}{\@firstofone}{#1}%
}}
\makeatother

\begin{document}
\tableofcontents
\newpage

\noindent
Regular: abcĝḫṭṣ\\
\textit{kursiv: abcĝḫṭṣ}\\
\su{Kapitälchen: abcĝḫṭṣ}\\
Regular: abcĝḫṭṣ\\
\textbf{fett: abcĝḫṭṣ}\\
\textbf{\textit{fett kursiv: abcĝḫṭṣ}}\\
\textbf{fette \su{Kapitälchen: abcĝḫṭṣ}}\\
\textsl{geneigte \su{Kapitälchen: abcĝḫṭṣ}}\\
\textit{kursive \su{Kapitälchen: abcĝḫṭṣ}}\\
\section{Kapitälchen in der Überschrift: %
% Hoffentlich erscheinen jetzt die Sonderzeichenauch dann
% korrekt in den Kopfzeilen wenn man sie direkt aufruft:
\su{abcĝḫṭṣ\^g\chet\d{t}\d{s}}%
}
\lipsum[1-6]

\end{document}
Christoph Stracke
2012-08-16 08:44:03 UTC
Permalink
Post by Ulrich D i e z
habe mir erlaubt, ein paar Änderungen an Deinem Code vorzunehmen,
Hallo Ulrich,

gerne. Für Verbesserungen durch „TeX-Muttersprachler“ bin ich immer
offen! ;-)
Post by Ulrich D i e z
Zweitens sollten die auf sich selbst definierten Character
"robust" sein, d.h. in sogenannten "moving-Arguments" entweder
bleiben was sie sind oder nach Expansion wieder sich selbst
ergeben, sodass man da am Ende wieder den unexpandierten _aktiven
Character_ hat und kein letter/other-Character-Token.
Dann werden die aktiven Character nämlich nicht zur Unzeit
expandiert und es klappt (hoffentlich) auch in den running
headers.
Die Running Headers funktionieren jetzt auch mit den
Nicht-Standardzeichen wie sie sollen.
Post by Ulrich D i e z
Kurz gesagt ist es nämlich so: \su ist robust, dann müssen die
aktiven Character, die von \su umdefiniert werden und in seinem
Argument auftauchen können, auch robust sein. Damit nicht
passieren kann, dass sie zu einer Zeit, zu der Dank der
Robustheit das Expandieren von \su verhindert wird, doch
expandiert werden und dann zwar nämlich mit dem \meaning, das
sie "normalerweise" haben wenn sie nicht durch \su umdefiniert
sind...
Ja, ich hatte versucht, einfach innerhalb der \su-Definition robuste
Kommandos zu definieren, aber das hatte nicht funktioniert …
Post by Ulrich D i e z
Das Problem ist nur, dass ich hier grade mal wieder vor den
selben alten Rechnern sitze wie gestern und wieder nicht testen
kann. (Es muss unbedingt mal ein Smartphone mit TeXLive und nem
netten Editor her...)
Umso erstaunlicher, daß Du es so „blind“ hingekriegt hast!
Aber davon ab: An einem Smartphone zu tippen, ist doch der blanke
Horror. Ich bin sehr zufrieden mit meinem VIM-Editor; da wüßte ich aber
nicht, wie ich den vernünftig und effizient auf einem Smartphone
bedienen sollte … ;-)
Post by Ulrich D i e z
Kannst Du (oder sonst jemand) mir sagen, ob der Code jetzt noch
fehlerfrei durchläuft und dabei macht was er soll?
Soweit ich es sehen kann, funktioniert alles perfekt, inklusive der
lebendigen Kolumnentitel und der hyperref-Einbindung!
(Auch wenn ich zwar Deinen Erklärungen soweit folgen, aber leider
codemäßig im Detail längst nicht alles verstehe, was Du genau gemacht
hast …)

Sehr schön, nochmal ganz vielen Dank! – Ich denke auch, daß auch viele
andere damit etwas anfangen können, denn das Problem fehlender
Sonderzeichen bei Kapitälchen ist ja ziemlich universell für Leute, die
in obskuren Sprachen schreiben (müssen) und darum exotische Akzente o.ä.
brauchen.

Herzliche Grüße
Christoph
Ulrich D i e z
2012-08-16 10:01:33 UTC
Permalink
Post by Christoph Stracke
Post by Ulrich D i e z
Kurz gesagt ist es nämlich so: \su ist robust, dann müssen die
aktiven Character, die von \su umdefiniert werden und in seinem
Argument auftauchen können, auch robust sein. Damit nicht
passieren kann, dass sie zu einer Zeit, zu der Dank der
Robustheit das Expandieren von \su verhindert wird, doch
expandiert werden und dann zwar nämlich mit dem \meaning, das
sie "normalerweise" haben wenn sie nicht durch \su umdefiniert
sind...
Ja, ich hatte versucht, einfach innerhalb der \su-Definition robuste
Kommandos zu definieren, aber das hatte nicht funktioniert …
Wenn \su nicht expandiert wird, findet auch das Umdefinieren,
welches immer dann angeleiert werden soll, wenn \su
expandiert wird, nicht statt.
Deshalb müssen auch die "normalen" bzw "auf sich selbst
definierten" Varianten robust sein.
Post by Christoph Stracke
Post by Ulrich D i e z
Das Problem ist nur, dass ich hier grade mal wieder vor den
selben alten Rechnern sitze wie gestern
[...]
Post by Christoph Stracke
Umso erstaunlicher, daß Du es so „blind“ hingekriegt hast!
Immerhin bin ich diesmal auf die Idee gekommen, auch einen
hex-Editor zu benutzen. Da werden zwar in der "Text"-Darstellung
(mangels Unterstützung von unicode-Fonts zur Textanzeige)
auch nicht alle Zeichen dargestellt, sondern oft Vierecke, aber
an den hex-Nummern in der hex-Darstellung sieht man dann
doch, dass da unterschiedliche Zeichen codiert sind...
Post by Christoph Stracke
Aber davon ab: An einem Smartphone zu tippen, ist doch der blanke
Horror.
Das ist wahr und es wäre ein Notbehelf. Was ich aber machen
könnte, wäre, die Eingabedatei an den alten Rechnern tippen,
dann per E-Mail an mich schicken, die E-Mail mit dem Smartphone
abrufen und dann auf dem Smartphone die Eingabedatei dort
nachbessern, wo es wegen der alten Rechner mit dem Unicode
Probleme gab und evtl. falsche Zeichen codiert sind. Aber vor
allem könnte ich die wie auch immer zustandegekommene
Eingabedatei auf dem Smartphone mal mit einem moderneren
(Xe)LaTeX compilieren lassen um zu sehen, ob der Code
funktioniert....
Post by Christoph Stracke
(Auch wenn ich zwar Deinen Erklärungen soweit folgen, aber leider
codemäßig im Detail längst nicht alles verstehe, was Du genau gemacht
hast …)
Kannst jederzeit (meinetwegen auch per Mail) nachfragen
wenn Du beim Code-Studium nicht weiterkommst.

Ich müsste halt wissen, wo genau es hapert (evtl jew. mit einer
kurzen Schilderung, was Du denkst, wie der Code funktioiert),
damit ich weiss, wo ich mit dem Erklären anfange.

Ulrich

Lesen Sie weiter auf narkive:
Loading...