PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lstlisting / setlistingstyle / dotnet



peterwy
19-01-2006, 17:13
Hallo,

bin Newie hier im Forum, habe mittlerweile, so glaube ich zumindest, dass ganze Web durchforstet, aber leider ohne Erfolg.

Verwende das dotnet Paket. Durch \setlistingstyle{c} und \begin{lstlisting}{} wird der Modus aktiviert in dem der Sourcecode eingefügt werden kann.

Paket funktioniert auch hervorragend, Problem ist aber, dass anstelle der Zeichenfolge ">>" ein schwarzes kleines ausgefülltes Viereck wiedergegeben wird. Sieht so aus, als wäre die Schriftart unbekannt. An einigen Stellen beschwert sich latex (im logfile) das bestimmte Schriftarten fehlen, aber in diesem Bereich, wo der Fehler auftritt, nie!

Vielleicht jat jemand ne Idee,

Grüße Peter

countbela666
19-01-2006, 17:43
Hallo Peter,

könnte das Problem sein, das hier beschrieben wird: http://www.mrunix.de/forums/showthread.php?t=42181

Grüße,
Marcel

peterwy
19-01-2006, 18:02
Ne, das ist das Problem leider nicht ... glaube ich zumindest. Bin gerade nochmal Quelltext und PDF durchgegangen. Wenn das Zeichen ">" vorkommt, wird dieses korrekt dargestellt. Erschreint die Zeichenfolge ">>", so werden diese beiden Zeichen scheinbar als ein Zeichen interpretiert / zusammengefasst. Dieses Zeichen was daraus entstehen soll, ist scheinbar nicht darstellbar. Wüsste kurze in das dotnet.sty Package geschaut. Da steht aber nichts davon, dass diese Kombination in einem Zeichen zusammengefasst wird. Macht Latex da was automatisch?

peterwy
19-01-2006, 18:13
Habe mir gerade noch einmal dass oben verlinkte Beispiel angeschaut.

Bei mir steht:

\usepackage[ansinew]{inputenc}

ändere ich das in

\usepackage[ansinew]{fontenc}
\usepackage[latin1]{inputenc}

um, so bekomme ich die Fehlermeldung:

Package fontenc error: Encoding file 'ansinewenc.def' not found

Vielleicht hat ja hierzu auch noch jemand ne Idee.

Gruß Peter

countbela666
19-01-2006, 18:25
Punkt 1: habe noch nie etwas von einem Paket dotnet.sty gehört, es ist nicht im CTAN gelistet, kann auch nichts darüber finden und somit dazu keine Aussagen treffen

Punkt 2: ja, bei bestimmten Fontencodings werden zwei spitze Klammern nicht durch Kerning dichter zusammengefügt sondern durch ein einzelnes Zeichen ersetzt (in LaTeX zu erzeugen durch \guillemotleft bzw. \guillemotright). Funktioniert aber nicht mit dem standardmäßig geladenen OT1-Encoding, deswegen solltest du versuchen, das T1-Fontencoding zu laden wie es in dem geposteten Link vorgeschlagen wird. Tust du das bereits und es funktioniert trotzdem nicht, poste doch bitte ein Minimalbeispiel.

ansinew und latin1 sind Formen der Eingabekodierung, die du mit dem Paket inputenc lädtst. Dadurch wird festgelegt, wie die Zeichen, die du in dein TEX-File hackst gespeichert und interpretiert werden. Welches du benutzt, ist hauptsächlich vom System (Windows, Linux, Mac) aber auch von den Editoreinstellungen abhängig; latin1 sollte für Windows und Linux funzen. Mit dem Paket fontenc legst du das Fontencoding, also die verwendeten Schrifttypen, fest. In deinem letzten Post hast du beides durcheinandergeworfen.

Probier doch mal folgendes (ohne Änderung):

\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
test << test « test \guillemotleft
\end{document}

peterwy
19-01-2006, 20:35
Hallo,

danke für die schnelle Antwort. Also es wird jedesmal dasselbe Zeichen ausgegeben in der Form test « test « «

Der Fehler besteht weiterhin.

Das Paket ist in einer Vorlage für eine Diplomarbeit.

http://www.distributed-dotnet.de/data/teachmisc/sep.zip

Gruß Peter

PS: Der Fehler besteht weiterhin, ich habe immernoch son nettes schwarzes Rechteck im Text

bischi
19-01-2006, 20:55
Minimalbeispiel?

MfG Bischi

countbela666
19-01-2006, 21:17
Hallo Peter,

wenn mit meinem Beispiel besagter Fehler bei dir immer noch auftritt, bzw. du den Rumpf der von dir geposteten Vorlage nutzt (hab sie mir mal angesehen, sieht bis auf ein, zwei kleine Sachen ganz vernünftig aus), liegt es nicht am Code oder an fehlenden Paketen. Bei allem weiteren kann ich nur spekulieren; vielleicht liegt's an unvollständigen Font-Installationen oder veralteten Paketen. So richtig kann ich dann nicht mehr weiterhelfen; ich würde mal die LaTeX-Installation aktualisieren oder zu Not eine Neuinstallation vornehmen (ich nehme stark an, dass du MiKTeX nutzt).

Wie sieht's denn aus, wenn du nach DVI oder PS erstellst (da in der Vorlage explizit pdftex-Treiber geladen werden, gehe ich davon aus, dass du bis jetzt mit pdfLaTeX kompiliert hast)? Vielleicht liegt's ja auch nur am Viewer.

Grüße,
Marcel

peterwy
19-01-2006, 21:48
Nochmal danke für die Hilfe,

ich habe den Fehler rausbekommen.

Ich habe ein Paket eingebunden namens "ae"

Als Kommentar steht hier bei mir dran, für die PDF-Erstellung

Ist das wirklich erforderlich das Paket????

Gruß Peter

PS: Ohne das Paket funktioniert es, aber aufgrund der riesigen Textmenge kann ich schlecht kontrollieren, ob an irgendeiner Stelle das fehlende "ae" Paket Auswirkungen hat!

peterwy
19-01-2006, 21:59
Also der Fehler passiert grundsätzlich in Verbindung mit dem ae Paket. Ohne sehen die Überschriften irgendwie nicht wirklich schön aus. Vielleicht hat ja jemand ne Idee, wie ich ohne Neuinstallation das hinbekomme. Updaten ist ok, aber ich muss das manuell vornehmen, da ich keine I-Net direkt an meinem Laptop habe nur an meinem stationären PC. Also runterladen und manuel installieren ... ;-) Vielleicht weiß ja jemand welches Paket ich aktualisieren muss ...

countbela666
19-01-2006, 22:29
Sehr schön, dass du es herausgefunden hast. Wenn du gleich ein Minimalbeispiel erstellt hättest, oder wie ich dir geraten habe, mein Beispiel ohne Änderungen kompiliert hättest, wär dir schneller geholfen worden.

Zur Erklärung: Für die original LaTeX-Fonts (CM-Schriften, "Computer Modern") gibt es an den europäischen Zeichenvorrat (T1-Codierung) angepasste Entsprechungen, die mit \usepackage[T1]{fontenc} recht einfach genutzt werden können. Diese liegen jedoch nicht frei im PostScript-(Type-1)-Format, sondern häufig nur als Bitmap-Schrift vor.

Um trotzdem Schriften, die nach Computer Modern aussehen, den europäischen Zeichenvorrat abdecken und im Type-1-Format vorliegen, nutzen zu können, gibt es als Notlösung spezielle virtuelle Fonts, die den Zeichensatz der T1-Codierung aus Zeichen der OT1-Codierung quasi "zusammenbasteln". Diese werden als "almost european" oder kurz AE-Fonts bezeichnet und können über \usepackage{ae} eingebunden werden. Problem dieser zusammengeflickten Fonts ist jedoch, dass nicht alle Zeichen aus Teilen der OT1-Codierung zusammengesetzt werden können, so zum Beispiel auch die als "Guillemets" bezeichneten französischen Anführungszeichen, durch die zwei aufeinanderfolgende spitze Klammern ersetzt werden (-> Ligatur).

Es gibt nun mehrere Möglichkeiten:
1) du kannst die (weniger hoch auflösenden) T1-Bitmap-Fonts nutzen, wie du es im Augenblick ohne das ae-Paket zu laden, tust
2) du nimmst das Paket ae wieder rein, hast virtuelle T1-Codierung mit Type-1 Fonts und spaltest die Ligatur jeweils durch <{}< bzw. >{}> auf
3) oder du lädtst ebenfalls weiter das Paket ae und holst dir die fehlenden Guillemets durch Einbinden von \usepackage{aeguill} aus anderen CM-Schriften (dann werden Original-Guillemets auf jeden Fall korrekt angezeigt, ob das für die Ligaturen auch gilt musst du ausprobieren)

Grüße,
Marcel

peterwy
19-01-2006, 23:07
Hallo,

hatte dein Beispiel übertragen und das Ergebnis oben gepostet.
Das mit den Ligaturen klappt leider nicht.

Option 1 würde ich ungerne machen.
Option 2 fällt raus, da das beschriebene Paket für das Einsetzen von Sourcecode gedacht ist und somit die geschweiften Klammern mit ausgibt.
Option 3 funktioniert leider nicht (nur wenn man direkt \guillemotleft schreibt)

Kann ich irgendwie ein redefine machen wo drin steht >> gleich \guillemotleft ???

countbela666
19-01-2006, 23:16
Option 2 könntest du mit der listings-Option escapechar doch realisieren: alles zwischen zwei definierten Delimitern wird als LaTeX-Befehl interpretiert und nicht als verbatim ausgegeben:

\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ae,aeguill,listings}
\lstset{escapechar=\%}
\begin{document}
\begin{lstlisting}
cout <%{}%< Hallo Welt
\end{lstlisting}
\end{document}Grüße,
Marcel

peterwy
24-01-2006, 17:30
Hallo Marcel,

vielen Dank für die Antwort, die hat mir sehr geholfen. Habe noch eine kleine Änderung eingebaut, dass macht das ganze noch effizienter in Zusammenhang mit der Mathematikumgebung:

<CODE>
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ae,aeguill,listings}
\lstset{escapechar=<b>§</b>}
\begin{document}
\begin{lstlisting}
cout <b>§$\gg$§</b> Hallo Welt
\end{lstlisting}
\end{document}
</CODE>