PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger \renewcommand Hilfe



jumbo125
29-03-2012, 07:05
Vorweg, danke an alle User die sich derart toll um uns Anfänger kümmern. Man fühlt sich hier immer Wilkommen, mit seinen Problemen.

Ich hoffe das ich hier solche Fragen stellen darf, jedoch ist es als Anfänger immer einfacher in einem Forum eine Frage zu stellen, als sich mühsam Anleitungen/Beschreibungen durchzulesen. Vorallem, wenn es nicht funktioniert und man nicht weiß weshalb...

Obwohl ich schon die Koma-Script Anleitung durchgesucht habe, konnte ich trotzdem nicht das passende finden.

Wie setzt sich der \renewcommand zusammen???

\renewcomman{??}{??}
andauernd liest man ihn, aber wie genau er definiert wird, hab ich noch nirgendst gelesen

\setkomafont ändert zwar allle überschriften, aber wie kann man die schriftart des restlichen Textes in bspw. Arial umändern?

Ich hoffe das nicht gleich Antworten wie "schau ins Handbuch" oder "uns hat es auch keiner erklärt" kommen
Vielen Dank für jede Hilfe

rstuby
29-03-2012, 07:52
In den ersten Klammern bei \renewcommand steht der Befehl, dessen Bedeutung du ändern möchtest, und in den zweiten Klammern die neue "Füllung" des Befehls.
Es ist also eigentlich das gleiche wie \newcommand, außer dass der Befehl nicht erfunden wird, sondern schon existiert und umdefiniert wird.

Genau das kann man machen, um den Textkörper auf Sans-Serif-Schrift umzustellen:

\renewcommand{\familydefault}{\sfdefault}

\familydefault ist ein Befehl, der intern benutzt wird, um die Grundschrift anzuwenden. Du sagst nun, dass dieser Befehl nun die \sfdefault zum Inhalt haben soll, welches die Sans-Serif-Variante der Grundschrift ist.

Ich würde dir raten, \renewcommand auch nur in solchen Zusammenhängen (Umdefinition von internen Werten zur Änderung der Formatierung) zu benutzen. Wenn du einen Befehl zum Selberbenutzen definieren willst, nimm einen, der noch nicht existiert, und benutze \newcommand.

rstuby
29-03-2012, 08:00
PS: Es gibt noch einen Unterschied zwischen \renewcommand und \renewcommand*, aber den müssen dir andere erklären...

cgnieder
29-03-2012, 12:49
\newcommand*{\befehl}[args][default]{code}
\newcommand und (\renewcommand) haben zwei obligatorische Argumente: der zu definierende (oder zu überschreibende) Befehlsname und die Definition. Zusätzlich haben sie zwei optionale Argumente. Im ersten wird die Anzahl der Argumente festgelegt, die der neue haben soll. Verwendet man das zweite, ist das erste Argument des neuen Befehls ein optionales Argument mit
default als Default-Wert.

\newcommand*\foo{bar}
\foo -> bar

\renewcommand*\foo[1]{bar: #1!}
\foo{bla} -> bar: bla!

\renewcommand*\foo[2][ohne]{bar #1 Option/mit #2.}
\foo{bla} -> bar ohne Option/mit bla.
\foo[mit]{bla} -> bar mit Option/mit bla.

Verwendet man der Stern-Variante von \newcommand, so kann sein Argument keinen Absatz (als \par oder in Form einer Leerzeile) enthalten


\documentclass{article}
\usepackage{lipsum}% für Dummy-Text
\begin{document}
\newcommand\foo[1]{#1}
\foo{\lipsum[1-3]}% geht

\renewcommand*\foo[1]{#1}
\foo{\lipsum[1-3]}% geht nicht

\end{document}

Gruß

cgnieder
29-03-2012, 13:37
Definiert sind die Befehle übrigens im LaTeX-Kernel (siehe source2e (http://texdoc.net/pkg/source2e)) und beschrieben sind sie beispielsweise im usrguide (http://texdoc.net/pkg/usrguide)

Gruß

sommerfee
30-03-2012, 08:46
Verwendet man der Stern-Variante von \newcommand, so kann sein Argument keinen Absatz (als \par oder in Form einer Leerzeile) enthalten
...was den Vorteil hat, daß man bei einer fehlenden geschweiften Klammer die Fehlermeldung schon beim nächsten Absatzende bekommt, und nicht erst viel später, was die Zuordnung erschwert.

Beispiel:


\documentclass{article}
\newcommand*\test[1]{}

\begin{document}

\test{

Hier kommt Text...

\test{Test}

Hier kommt wieder Text...

\end{document}


(=> ! Paragraph ended before \test was complete. / Mit Zeilenangabe)

vs.



\documentclass{article}
\newcommand\test[1]{}

\begin{document}

\test{

Hier kommt Text...

\test{Test}

Hier kommt wieder Text...

\end{document}


(=> ! File ended while scanning use of \test. / Ohne Zeilenangabe)

Wenn \test auch noch ein Makro verwenden würde, wo ein Absatzende zu Problemen führt (etwa \label, \addtocontentsline, ...), hat die Stern-Variante weiterhin den Vorteil, daß die Fehlermeldung schon bei der fehlerhaften Verwendung von \test kommt, und nicht später, oder gar im worst case sogar erst beim nächsten LaTeX-Lauf.

Daher verwende ich immer die Stern-Variante, wenn ich sicher bin, daß ein Absatzende im Argument keinen Sinn ergibt.