PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aufzählungsliste mit Additionsspalte, aber keine Tabelle



cookie170
11-04-2007, 13:00
Hallo,

ich muss ähnlich einer Rechnung eine Aufzählung schreiben, bei der neben einem Text rechts, aber noch innerhalb des Satzspiegels, der Preis steht. Ich habe dazu etwas gepfuscht und es sieht nicht gut aus, aber man kann vielleicht sehen, was ich will:



\documentclass[ngerman]{scrartcl}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}

\begin{document}
Text ...
\blindtext
\begin{addmargin}[0pt]{5em}
\begin{enumerate}
\item \blindtext
\marginpar{\hspace{-3em}1\,000,00 Euro}
\item \blindtext \marginpar{\hspace{-3em}10\,000,00 Euro}
\end{enumerate}
\end{addmargin}
\end{document}


Geht das besser, etwa so, dass die Zahlen ungefähr an der Dezmalstelle ausgerichtet sind? Eine Tabelle scheidet eigentlich aus, weil die Texte etwas länger sind und eine Tabelle niemals innerhalb einer Zelle umbricht.

Gruß,
Alexander

edico
11-04-2007, 22:17
Wenn ich das richtig verstehe, soll sich alles im Rahmen der Textweite abspielen, margin soll nicht herangezogen werden.
Eine Liste koennte es sein, wobei die Textweite eingegrenzt wird, damit der Preis rechtsbuendig 'herausfaellt'; die Stellraedchen im Macro, dass Du leicht weiterentwickeln kannst ;-)
Vielleicht also so:

...
\newcommand{\preis}[1]{{%
\unskip\nobreak\hfil\penalty50\hskip2em\hbox{}\nob reak\hfil
#1 EUR
\parfillskip=0pt\par}}
...
\begin{enumerate}
\item Artikel A\\[6pt]
\begin{minipage}{0.925\linewidth}\blindtext\end{mi nipage}
\preis{1\,000,00}
\item Artikel B\\[6pt]
\begin{minipage}{0.925\linewidth}\blindtext\end{mi nipage}
\preis{10\,000,00}
\end{enumerate}
...

edico

cookie170
12-04-2007, 14:34
Hallo Edico,

minipages lassen aber auch keinen Umbruch mittendrin zu, oder?

Ich habe nun einfach eine mbox eingebaut:



\documentclass[ngerman]{scrartcl}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}

\begin{document}
Text ...
\blindtext

\begin{addmargin}[0pt]{7em}
\begin{enumerate}
\item \blindtext
\marginpar{\hspace{-5em}\makebox[5em]{EUR~1\,000,00}}
\item \blindtext \marginpar{\hspace{-5em} \makebox[5em]{\hfill EUR~10\,000,00}}
\end{enumerate}
\end{addmargin}
\end{document}


Elegant ist das noch nicht, zumal der rechte Rand nicht sauber eingehalten wird, sondern ich je nach Schrift und dem, was typearea macht, mit dem Einzug spielen muss. Außerdem wäre es übersichtlicher, tatsächlich rechts eine mit einer senkrechten Linie abgegrenzte Spalte rechts zu haben.

Wenn jemand eine Idee für eine Art "Infospalte" -- hier also eine Rechenspalte -- hat, die an jeder beliebigen Stelle umbricht,
-- her damit!

Gruß,
Alexander

edico
13-04-2007, 12:45
Ja, das ist alles richtig, aber an sich versteh ich nicht, was Du tatsaechlich willst.
Und kannst Du es so weiterentwickeln:

\documentclass[10pt]{article}

\def\blindtxt{Here comes the text and some more words to tell a never ending story of the birds and the bees. }

\setlength{\marginparsep}{-50pt}

\begin{document}

\begin{enumerate}
\item \blindtxt%\\
\marginpar{\flushright EUR 1\,000,00}
\item \blindtxt%\\
\marginpar{\flushright EUR 10\,000,00}
% da Kollision_Textlaenge mit negativem Einzug, 'abrupter' Zeilenumbruch noetig
\item \blindtxt\blindtxt\blindtxt\\
\marginpar{\flushright EUR 10\,000,00}
\item \blindtxt\blindtxt\blindtxt\\
\marginpar{\flushright EUR 10\,000,00}
\end{enumerate}

\end{document}

edico

cookie170
13-04-2007, 13:51
Hallo Edico,

das ist wirklich schön einfach, zumal \marginparsep auch im laufenden Dokument geändert werden kann, naja, eben, in einem Minimalbeispiel ging es jedenfalls.

Vielen Dank. Ich war inzwischen auf die Idee gekommen, das Packet parallel.sty zu mißbrauchen. Aber es geht offensichtlich einfacher.

Weißt Du, wie ich \marginparsep danach wieder auf den früheren Wert setze, den ich nicht kenne (wie findet man den Betrag von Längen heraus?)?

Gruß,
Alexander

edico
13-04-2007, 17:35
... the answer is blowin' in the wind oder schau bitte in das Beispiel:

\documentclass[10pt]{scrartcl}
\usepackage{pifont,xcolor,layout,showframe}

\def\blindtxt{Here comes the text and some more words to tell a never ending story of the birds and the bees. }

\begin{document}
{\color{blue}
marginparwidth:\the\marginparwidth \quad
marginparsep:\the\marginparsep \quad
marginparpush:\the\marginparpush \par
evensidemargin:\the\evensidemargin \quad
oddsidemargin:\the\oddsidemargin
}

\section{}
\makeatletter
\setlength{\marginparsep}{-30pt}
\makeatother

\begin{enumerate}
\item \blindtxt\marginpar{\flushright EUR 1\,000,00}
\item \blindtxt\marginpar{\flushright EUR 10\,000,00}
\end{enumerate}


%%%
\section{}
\makeatletter
\newenvironment{listLIRE}[2]{%
\begin{list}{\ding{42}}{%
%\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
%\setlength{\listparindent}{\parindent}%
%\setlength{\itemindent}{\parindent}%
%\setlength{\parsep}{\parskip}%
}%
%\item[]}{\end{list}}
}{\end{list}}
\makeatother

\blindtxt\blindtxt

\begin{listLIRE}{15pt}{36pt}
\setlength{\marginparsep}{-42pt}
\item \blindtxt\blindtxt \marginpar{\flushright EUR 1\,000,00}
\item \blindtxt\blindtxt \marginpar{\flushright EUR 10\,000,00}
\end{listLIRE}

\blindtxt\blindtxt

\vfill
\begin{verbatim}
other commands depending on \marginpar
# \reversemarginpar
# \normalmarginpar
# \marginparwidth
# \marginparsep
# \marginparpush
\end{verbatim}

{\color{blue}
marginparwidth:\the\marginparwidth \quad
marginparsep:\the\marginparsep \quad
marginparpush:\the\marginparpush
}

\newpage
\printparam

\newpage
\layout
\end{document}


edico

edico
18-04-2007, 13:22
... vielleicht noch eine ordentliche Möglichkeit, nach dem Macro vmarginnote von Markus Kohm -irgendwo, irgendwann :

%%%
%%% MACRO Vmarginnote
%%% fuer Standard_class: article, report, aber nicht book, KOMA_class
%%%
\documentclass{article}%report
\usepackage{ngerman}

\def\txt{Dies ist ein wunderbar schlichter und gleichzeitig nichtssagender Text, der nicht gelesen werden will, um seinen Zweck zu erf"ullen. }

%%% Randnotiz \vmarginnote,
%%% die auch innerhalb von floating Umgebungen funktioniert
%%% von Markus Kohm
%%% Last modified 2007-04-17 edico
%\usepackage{mparhack}%<<<?
\makeatletter
\newcommand*{\marginfont}{}%
\newcommand{\Vmarginnote}[1]{%
\@bsphack%
\strut\vadjust{%
\vbox to \z@{%
% now set the margin information
\vss%
\if@twoside%
\ifthispageodd{%
\rlap{\kern.85\textwidth\kern\marginparsep%<<< Stellschraube_Einzug
\raise\z@ \vtop to\z@{%
\hsize\marginparwidth\marginfont%
\raggedleft\sloppy\hspace{\z@}%
#1\\\vss}}%
}{%
\llap{\raise\z@ \vtop to\z@{%
\hsize\marginparwidth\marginfont%
\raggedright\sloppy\hspace{\z@}%
#1\\\vss}%
\kern\marginparsep}%
}%
\else%
\rlap{\kern.85\textwidth\kern\marginparsep%<<< Stellschraube_Einzug
\raise\z@ \vtop to\z@{%
\hsize\marginparwidth\marginfont%
\raggedleft\sloppy\hspace{\z@}%
#1\\\vss}}%
\fi%
\kern\dp\strutbox%
}%
}%
\@esphack%
}
\makeatother

\begin{document}
\txt\txt\Vmarginnote{EUR 1\,000.00}\par
\txt\txt\txt\txt\Vmarginnote{EUR 10\,000.00}

\begin{enumerate}
\item \txt\txt\Vmarginnote{EUR 1\,000.00}\par
\item \txt\txt\txt\txt\Vmarginnote{EUR 10\,000.00}
\end{enumerate}
\end{document}

edico

cookie170
18-04-2007, 17:22
Hallo Edico,

leider geht diese Lösung weit über meinen Horizont.

Aber da aus dem Makro Vmarginnote inzwischen das Paket marginnote wurde, mit der Möglichkeit, den horizontalen Einzug der Randnotiz über \marginnoterightadjust zu bestimmen, ist folgende Lösung 1 dank Deiner Anregung schon mal überschaubar und auch im Ergebnis erfreulich.

Dann habe ich eine zweite Lösung gebastelt, bei der mit longtable und listliketab auch ein Seitenumbruch in der Tabelle möglich ist, aber eben nicht innerhalb eines Tabellenfeldes.


\documentclass[ngerman]{scrartcl}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{blindtext}

% Für Lösung 1:
\usepackage{marginnote}
\renewcommand{\marginnoterightadjust}{-10em}

% Für Lösung 2:
\usepackage{listliketab}
\usepackage{tabularx}
\usepackage{longtable}


\begin{document}

\section{Lösung mit dem Paket marginnote:}

\begin{addmargin}[0pt]{7em}
\begin{enumerate}
\item Hier könnte man die erste Position eines Angebots erörtern
und dabei dessen wichtigste Details zusammenfassen. Hier könnte man die erste Position eines Angebots erörtern
und dabei dessen wichtigste Details zusammenfassen.
\marginnote{\makebox[8em][r]{EUR~1\,000,00}}
\item Hier könnte man die erste Position eines Angebots erörtern
und dabei dessen wichtigste Details zusammenfassen. Hier könnte man die erste Position eines Angebots erörtern
und dabei dessen wichtigste Details zusammenfassen. \marginnote{\makebox[8em][r]{EUR~1\,000\,000,00}}
\end{enumerate}
\end{addmargin}


\section{Oder so, Lösung mit dem Paket listliketab:}

\blindtext \blindtext

Und noch etwas Text, damit der Seitenumbruch zwischen zwei Seiten auftaucht:

Und noch etwas Text, damit der Seitenumbruch zwischen zwei Seiten auftaucht:

Und noch etwas Text, damit der Seitenumbruch zwischen zwei Seiten auftaucht:

\storestyleof{enumerate}
\begin{listliketab}
\newcounter{tabenum}\setcounter{tabenum}{0}
\newcommand{\nextnum}{\addtocounter{tabenum}{1}\th etabenum.}
\begin{longtable}{Lp{0.5\linewidth}|r r}
\nextnum & Hier könnte man die erste Position eines Angebots erörtern
und dabei dessen wichtigste Details zusammenfassen & EUR & 1\,000\,000,00 \\
\nextnum & Man muss allerdings aufpassen, dass kein Seitenumbruch
mitten in ein Tabellenfeld fallen könnte, sonst gibt's Löcher oder die Tabelle landet wo ganz anders & EUR & 5\,000,00\\
\nextnum & Nebenkosten & EUR & 1,00 \\
\end{longtable}
\end{listliketab}

\end{document}

Beide Lösungen werde ich in Zukunft jeweils nach Situation verwenden. Und sowas soll mal jemand mit Word & Co. nachmachen ...

Danke Dir nochmals ganz herzlich,
Gruß,
Alexander