sverweis umsetzen

Tabellen und Grafiken erstellen und anordnen


sr
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 1. Feb 2013, 17:40

sverweis umsetzen

Beitrag von sr »

Guten Tag zusammen,

dies ist mein erstes posting, also bitte meckert lieber, statt nicht zu helfen. ;-))
Ich bin immer für "RTFM", also freue ich mich auch über Literaturhinweise!

Meine Aufgabenstellung:

Ich möchte aus vorhandenen Daten einen Katalog erstellen.
Dieser wird an verschiedene Endkunden verteilt.
Mir liegen von diesen Endkunden die zu unseren Artikelnummern passenden Kundenartikelnummern in Form einer Tabelle (z.B. csv) vor.

Diese Tabellen habe ich von diversen Kunden.

Ich möchte nun in den Katalog einen entsprechende Referenztabelle einbauen, um durch eine automatische Referenz mit ersetzen eines Textbereiches auf Knopfdruck individuelle Kataloge erstellen zu können. Ähnlich wie das bei Excel möglich ist.

Wenn ein Kunde später seine Artikelnummern umstellt, brauche ich nur die Referenztabelle zu aktualisieren und die Nummern stimmen wieder.

Hoffe ich habe das verständlich dargestellt.

Gruß
Sven
"Rain is paddlers sunshine!"

Gast

Beitrag von Gast »

Nö, denn es ist absolut unklar, was das ganze mit LaTeX zu tun hat …

LaTeX ist eine Satzsoftware keine Datenbankanwendung.

sr
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 1. Feb 2013, 17:40

Beitrag von sr »

Gut, genau das brauche ich.
Ich möchte lediglich bestimmte Textstellen bei Bedarf automatisch ersetzen.
Diese Zugehörigkeiten bekommen ich, wie Du richtig sagst, in einer Datenbankform.
Wenn mann csv als solche Bezeichnen möchte.

Ich möchte also gerne die Funktionalität von Latex mit dieser "Datenbankfunktion" nutzen.

ist vielleicht vergleichbar mit verschiedenen Sprachversionen.
"Rain is paddlers sunshine!"

Gast

Beitrag von Gast »

Mir ist noch immer nicht klar, was Du eigentlich willst, aber eventuell suchst Du http://www.ctan.org/topic/data-import?

Wenn nicht: http://www.dets-home.de/it-writings/sma ... s-ger.html

PS: Und bitte den Status anpassen.

sr
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 1. Feb 2013, 17:40

Beitrag von sr »

O.K. scheinbar geht das nur in Zusammenarbeit mit einer Scriptsprache.
Trotzdem danke für den Versuch.
"Rain is paddlers sunshine!"

dknof
Forum-Anfänger
Forum-Anfänger
Beiträge: 48
Registriert: So 29. Jul 2012, 13:30

Beitrag von dknof »

Hallo Sven,

als erstes beschreibe ich Dein Problem so, wie ich es verstanden habe.
Ihr habt eine Liste von Produkten, die Ihr mit Euren Artikelnummern verseht, also beispielsweise 1,2,3,4. Dann habt Ihr die Kundenartikelnummern, die Euren Artikelnummern zugeordnet sind, also A,B,D wird entsprechend A-1, B-2, D-4 zugeordnet, 3 ist dabei nicht für den Kunden vorgesehen. Nun willst Du einen Katalog für diesen Kunden erstellen, in dem die hinter 1,2,4 hinterlegten Daten unter A,B,D dargestellt werden.

Das LaTeX-Dokument hat dann die Struktur
\documentclass{scrartcl}

\newcommand{\Artikel}[2]{%
% #1 Artikelnummer
% #2 Kundennummer
\section{Artikel #2}
\input{Produktbeschreibungen/#1.tex}
}

\begin{document}
\Artikel{1}{A}
\Artikel{2}{B}
\Artikel{4}{D}
\end{document}
Die automatische Generierung aus einer csv-Datei kannst Du mit datatool (Dokumentation: texdoc datatool) direkt in LaTeX hinbekommen.
Ich würde allerdings einfach ein Shell-Skript schreiben. Ist Kunde.csv die Datei mit Kundenartikelnummer in der ersten Spalte und Artikelnummer in der zweiten Spalte, dann schreibt unter Unix/Linux/MinGW
(read; sed 's/^\(.\+\);\(.\+\)$/\\Artikel{\2}{\1}/') <Kunde.csv >Kunde.tex
die gewünschten Befehle in die Datei Kunde.tex, wobei die erste Zeile ignoriert wird. Diese musst Du dann nur noch mit \input in Dein tex-Dokument einlesen.

Gruß
Diether

Besserwisser

Beitrag von Besserwisser »

sr hat geschrieben:O.K. scheinbar geht das nur in Zusammenarbeit mit einer Scriptsprache.
Also willst Du etwas anderes als der anonyme Gast vermutet hat, denn diverse der von ihm aufgeführten Pakete (darunter übrigens auch das von dknof noch einmal erwähnte datatool) brauchen keine zusätzliche Scriptsprache zur Verarbeitung von CSV-Dateien. Daher wäre es eigentlich allerhöchste Zeit, dass Du mal richtig erklärst und am besten auch mit Beispielen illustrierst, was denn nun tatsächlich das Problem ist. Anderenfalls frustrierst Du nicht nur Dich, sondern auch die Helfer. Probleme ordentlich zu formulieren, so dass sie auch jemand verstehen kann, der nicht seit drei Tagen beobachtet, was Du machst, sollte eigentlich selbstverständlich sein.

sr
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 1. Feb 2013, 17:40

Beitrag von sr »

O.K. ich beschreibe das Problem anders.

Beispiel:

1. .tex-Datei
....
\begin{tabular}{l l  r}
{\LARGE \bf Netzüberwachung} & & 3-Phasen {\color{red}ohne} Hilfsspannung\\[3ex]
z.B für Pumpen oder Lüfter 400V AC 50/60 Hz & &\\[5ex]
\hline \\
& Type Finder & Artikelnummer\\[3ex]
1W / 6A & & \\[1ex]
\raisebox{-1\height}{\includegraphics[height=100px]{produktbilder/7061} \includegraphics[height=100px]{produktzeichnungen/7231-wiring}} & %70.61.8.400.000% & %kdartnum% \\[1ex]
\end{tabular}
...
2. .csv-Datei
....
70.61.8.400.000;47110000
....
Jetzt soll also %kdartnum% gegen 4711000 getauscht werden, wenn 70.61.8.400.000 in der irgendwo (in der .tex-Datei ?) angegebene cvs-Datei gefunden wird und die 2 Spalte nicht leer ist.

Wenn ich den Dateinamen der csv-Datei dann im tex-code ändere, wird z.B. ein PDF-Dokument mit den Artikelnummern eines anderen Kunden erzeugt.

Wenn's so nicht verständlich ist, bin ich mit meinem Erklärungslatein am Ende.

Danke schonmal
Sven
"Rain is paddlers sunshine!"

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4269
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Wenn's so nicht verständlich ist, bin ich mit meinem Erklärungslatein am Ende.
Also ich finde es unverständlich. Dein Code enthält lauter Dinge (\large, \color, \includegraphics, \raisebox, "z.B für Pumpen oder Lüfter 400V AC 50/60 Hz", deren einzige Funktion zu scheint, deinen Code unübersichtlich zu gestalten.


Abgesehen davon, ist es trivial eine Nummer durch die andere zu ersetzen. Und mit datatool kann man auch sicherlich die Liste der \@namedef-Definitionen automatisch erzeugen:
\documentclass{article}
\makeatletter
\@namedef{70.61.8.400.000}{47110000}
\makeatother
\begin{document}

\csname70.61.8.400.000\endcsname
\end{document}

dknof
Forum-Anfänger
Forum-Anfänger
Beiträge: 48
Registriert: So 29. Jul 2012, 13:30

Beitrag von dknof »

Hallo Sven,

am Besten beschreibst Du Dein Beispiel einmal so, dass Du einmal die vollständige Eingabe und einmal die vollständig gewünschte Ausgabe zeigst. Dabei solltest Du die für das Problem unwichtigen Dinge weglassen (von Deinem Beispiel ist nur eine Zeile wichtig, dafür kann man Dein Dokument nicht kompilieren).
Und hast Du schon meinen Vorschlag ausprobiert? Wenn ja, was fehlt Dir daran oder was hast Du daran nicht verstanden?

Als Ergänzung: Mit
\documentclass{scrartcl}

\newcommand{\Artikel}[2]{%
% #1 Artikelnummer
% #2 Kundennummer
\section{Artikel #2}
\begingroup
\newcommand{\Artikelnummer}{#1}
\newcommand{\Kundenartikelnummer}{#2}
\input{Produktbeschreibungen/#1.tex}
\endgroup
}

\begin{document}
\Artikel{1}{A}
\Artikel{2}{B}
\Artikel{4}{D}
\end{document}
hast Du in den Dateien Zugriff auf die eigene Artikelnummer und die Artikelnummer des Kundens.
Erstelle noch die Dateien Produktbeschreibungen/1.tex, Produktbeschreibungen/2.tex und Produktbeschreibungen/4.tex jeweils mit dem Inhalt
Artikelnummer: \Artikelnummer\\
Kundenartikelnummer: \Kundenartikelnummer
In Deinem Beispiel wäre dies die Datei Produktbeschreibungen/70.61.8.400.000.tex

Gruß
Diether

Antworten