PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : providecommand mit zeilenumbruch



inigor
16-09-2005, 17:16
hallo,

kann mir jemand mit dem folgenden problem helfen?

\newenvironment{acronym}%
{\begin{tabular}{l}
\providecommand{\acro}[2]{%
\acrodef{##1}{##2}%
##1 & ##2 \\}%
}
{\end{tabular}}

dies funktioniert so nicht, wenn ich & und \\ aus providecommand wegnehme, gehts.
wie kann ich die tabular umgebung in dieser art verwirklichen??

danke
igor

rais
16-09-2005, 17:49
Hallo Igor,
also erstmal: \acrodef ist bei mir nur im acronym Paket definiert - in dem gibt's aber auch bereits eine Umgebung "acronym" (von \acro ganz zu schweigen), d.h. (aus meiner Sicht) entweder hast Du das Paket acronym geladen, dann mußt Du zumindest \renewenvironment{acronym}... benutzen (oder die Umgebung anders nennen) - oder Du hast acronym nicht geladen, dann kann ich mit \acrodef aber nichts anfangen.

Was z.B. funktioniert:


\documentclass{scrartcl}
\providecommand{\acro}[2]{#1 & #2\\}
\newenvironment{acronym}{%
\begin{tabular}{rl}% man beachte die zweite Spaltendefinition
}{
\end{tabular}
}
\begin{document}
\begin{acronym}
\acro{CPU}{Central Processing Unit}
\acro{DVD}{Digital Versatile Disc}
\end{acronym}
\end{document}

ich persönlich ziehe aber die acronym Umgebung von dem acronym Paket vor...
MfG,

inigor
16-09-2005, 18:10
hi,
der codeausschnitt ist aus acronym.sty.
das problem an diesem packet ist, das es eine description umgebung nutzt, welches keine klaren spalten in der acronym umgebung erstellt.
das sieht nicht schön aus.

danke für die hilfe, probier es gleich mal aus

rais
16-09-2005, 18:29
Na dann vielleicht lieber gleich so etwas wie


\documentclass{scrartcl}
\usepackage{acronym}
\providecommand{\myac}[2]{%
\acrodef{#1}{#2}%
#1 & #2\\%
}
\newenvironment{myacronym}[1][Abkz.]{%
\section{#1}
\begin{tabular}{rl}
}{
\end{tabular}
}
\begin{document}
Text \ac{CPU} bla bla\dots\par
\begin{myacronym}
\myac{CPU}{Central Processing Unit}
\myac{DVD}{Digital Versatile Disc}
\end{myacronym}
\end{document}

Du willst ja sicherlich im Text auch wieder Bezug nehmen können ;)
Bedenke aber, daß Deine Liste nicht zu lang werden darf, da tabular keine Seitenumbrüche (anders als bei description) zuläßt - dann entsprechend longtable laden und verwenden...
MfG,

inigor
16-09-2005, 18:34
ja, longtable hatte ich jetzt schon genutzt und hab es in einem acronym.sty von 1995 verändert:


\providecommand{\acro}[2]{ \acrodef{#1}{#2} #1 & #2 \\}
\newenvironment{acronym}%
{\begin{longtable}{ll}}
{\end{longtable}}

warum kann ich providecommand mit den zeichen & und \\ nicht innerhalb der newenvironment nutzen??

rais
16-09-2005, 22:48
ja, longtable hatte ich jetzt schon genutzt und hab es in einem acronym.sty von 1995 verändert:

a) wo hast Du so eine alte Version noch her ?
b) Du meinst hoffentlich so etwas wie "acronym.sty nach myacronm.sty kopiert und angepaßt"
[ edit ]
Aber warum willst Du unbedingt das Original verändern ? Das Beispiel funzt doch auch so...
[ /edit ]

warum kann ich providecommand mit den zeichen & und \\ nicht innerhalb der newenvironment nutzen??
Wieso? Kann er doch... das lag vermutlich eher daran, daß in Deinem ersten Beispiel nur eine Spalte definiert war... bei mir läuft's auch innerhalb - hatte bloß umgestellt, weil ich nicht gern geschachtelte Definitionen benutze ;)
MfG,