Seite 1 von 1

Reihenfolge der Kommandoauflösung

Verfasst: Fr 8. Sep 2017, 08:58
von olpo
Hallo,

wie kann ich festlegen, dass zuerst der innere Befehl aufgelöst wird, und dann der äußere?

Ich habe nämlich ein command \fig{} definiert, bei dem ich gerne \xcapitalisewords verwenden möchte, falls ich \fig{} am Satzanfang verwende.

Das wird aber nicht kompiliert, da wohl zuerst \xcapitalisewords angewendet wird und sich daraus ein groß geschriebener Befehl \Fig{} ergibt.
Es müsste zuerst \fig{} aufgelöst werden und dann \xcapitalisewords{figure reference}.
\documentclass{article} 
\usepackage[british]{babel} 

\newcommand{\fig}[1]{figure\@~\ref{#1}}

\begin{document} 

\fig{reference}

% so geht's leider nicht.
% Es sollte Fig. ?? rauskommen
%
%\xcapatalisewords{\fig{reference}}
 
\end{document}

Verfasst: Fr 8. Sep 2017, 09:23
von markusv
Für die korrekte Referenzierung gibt es doch geeignete Pakete, bspw. cleveref.
\documentclass[british]{article} 
\usepackage{babel} 
\usepackage[noabbrev]{cleveref}%Umstellung von "fig." auf "figure" 
\begin{document} 
\begin{figure}
\caption{}\label{reference}
\end{figure}
This \cref{reference} starts in the middle of a sentence. \Cref{reference} is for the start.
\end{document}

Verfasst: Fr 8. Sep 2017, 18:38
von olpo
Ok, da habe ich ein doofes Bsp. ausgesucht.
ZB. habe ich auch das newcommand \seechap{}, bei dem das Problem auch auftritt.

Was ist denn mit \expandafter?
Ist das vielleicht was ich suche?

Verfasst: Fr 8. Sep 2017, 22:11
von u_fischer
olpo hat geschrieben: Was ist denn mit \expandafter?
Ist das vielleicht was ich suche?
Dein Beispiel definiert \xcapitalisewords gar nicht, daher kann man auch nicht wissen, was (und wieso) nicht funktioniert und wie man es reparieren könnte.

Verfasst: Sa 9. Sep 2017, 13:20
von olpo
u_fischer hat geschrieben:Dein Beispiel definiert \xcapitalisewords gar nicht, daher kann man auch nicht wissen, was (und wieso) nicht funktioniert und wie man es reparieren könnte.
Doch, in der letzten Zeile vor end{document} steht's.
Ich habe es auskommentiert, damit es baut.

Anwendung ist nicht gleich Definition

Verfasst: Sa 9. Sep 2017, 14:00
von Stamm-
olpo hat geschrieben:Doch, in der letzten Zeile vor end{document} steht's.
Ich habe es auskommentiert, damit es baut.
In der Zeile wird es angewendet und nicht definiert. Woher also kommt dieser Befehl (Paket, eigene Definition mit \newcommand in einer externen Datei, ...)?