FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

LATEX: Quellcode im Fließtext hervorheben

LATEX: Quellcode im Fließtext hervorheben 2008-07-28 22:56
Stanni
Moin Moin

Ich bin noch Latex Anfänger und hab jetzt nen Fließtext in dem einige Methodenname auftauchen. Die würde ich gerne, quasi in Monospace, als solche hervorheben.
Bei google finde ich auch nur wie man die Schriftart für ein ganzes Dokument ändert :-/

RE: LATEX: Quellcode im Fließtext hervorheben 2008-07-28 23:23
Zaphod
Die schnellste Möglichkeit ist, in deinem Fließtext die entsprechenden Funktionen mit \texttt{methodenname} zu schreiben. Für kleine Dokumente oder als Arbeitslösung reicht das ;-)

RE: LATEX: Quellcode im Fließtext hervorheben 2008-07-28 23:31
Stanni
Wunderbar, danke

RE: LATEX: Quellcode im Fließtext hervorheben 2008-07-29 00:41
low_level
Wenn ich in LaTeX schreibe, definiere ich mir meine eigenen Makros:

\let \jclass = \texttt
\let \jmethod = \texttt
\let \jkeyword = \texttt

(Das "j" steht für Java.)

Und wenn ich irgendwann mal die Stelle suche, wo ich eine Java-Klasse beschrieben habe, kann ich nach \jclass suchen statt nach \texttt.

RE: LATEX: Quellcode im Fließtext hervorheben 2008-07-29 11:52
Zaphod
Und wenn ich irgendwann mal die Stelle suche, wo ich eine Java-Klasse beschrieben habe, kann ich nach \jclass suchen statt nach \texttt.

Vor allem kannst du damit später sehr einfach den Font für jeglichen Quellcode ändern, ohne andere Textpassagen, die ebenfalls in TrueType stehen, zu beeinflussen.

RE: LATEX: Quellcode im Fließtext hervorheben 2008-07-29 21:09
Stanni
Werd ich mir mal merken. Im Moment reicht aber die einfache Variante ;-)
Danke

RE: LATEX: Quellcode im Fließtext hervorheben 2008-08-06 13:01
Muelli
Wenn ich in LaTeX schreibe, definiere ich mir meine eigenen Makros:

\let \jclass = \texttt
[…]

Das ist aber nicht LaTeX, oder?

Ich wuerde
\newcommand{\jclass}[1]{\texttt{#1}}

schreiben…

RE: LATEX: Quellcode im Fließtext hervorheben 2008-08-06 17:28
T
\newcommand{\jclass}[1]{\texttt{#1}}
das geht so:
\newcommand{\jclass}[#1]{\texttt{#1}}

RE: LATEX: Quellcode im Fließtext hervorheben 2008-08-07 00:47
low_level
Wenn ich in LaTeX schreibe, definiere ich mir meine eigenen Makros:

\let \jclass = \texttt
[…]
Das ist aber nicht LaTeX, oder?

Das stimmt. Aber da wir hier nicht in einem militanten LaTeX-aber-keinesfalls-TeX-Forum sind, habe ich mir diese einfachere Definition erlaubt. :) Der Befehl \let ist in plain-TeX und sogar iniTeX definiert, und in LaTeX funktioniert er genauso gut.

Roland

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 12:23
NaZo
Ich habe es auch so gemacht. Ich habe mir ein Kommando \code definiert:
\newcommand{\code}{\texttt}Jetzt ist es aber so, dass ich in meiner Diplomarbeit, die sich mit der Verwendung von Zugriffsmodifikatoren beschäftigt, ziemlich oft "private", "protected" und "public" schreiben muss. Daher dachte ich, verkürze ich mir das einfach noch weiter, und definiere:
\newcommand{\private}{\code{private}} \renewcommand{\protected}{\code{protected}} \newcommand{\public}{\code{public}}Wenn ich diese Kommandos nun aber im Text verwende, führt das dazu, dass darauffolgende Leerzeichen ignoriert werden.

Aus Methoden, die als \private deklariert sind,... wird: [latex]\text{Methoden, die als \texttt{private}deklariert sind,…}[/latex]

Fällt jemanden dazu eine Lösung ein?

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 12:38
Muelli
was ist eigtl. mit dem listing Paket?

Sonst gibt es noch alltt was hervorhebungen beherrscht. Ich wuerde mit listing gehen…

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 13:42
Julian F.
Fällt jemanden dazu eine Lösung ein?

Als Workaround kannst du Klammern hinzufügen, also z.B. \private{} schreiben. Hat was damit zu tun, dass LaTeX sonst das folgende Zeichen trotzdem deinem Befehl als Argument mitgibt, soweit ich weiß.

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 14:14
NaZo
Danke für die Anregungen. Habe jetzt selbst eine gute Lösung gefunden.

Der Befehl \xspace aus dem xspace-Paket bewirkt die Ausgabe eines Leerzeichens, immer dann, wenn es gebraucht wird, also nicht vor Kommas oder Punkten etc.
\usepackage{xspace} \newcommand{\code}{\texttt} \newcommand{\private}{\code{private}\xspace} \newcommand{\default}{default\xspace} \renewcommand{\protected}{\code{protected}\xspace} \newcommand{\public}{\code{public}\xspace}

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 17:08
Fred
Ich hab das bei mir so gelöst:
\usepackage{listings} \newcommand{\li}{\lstinline} Im Fließtext schreibe ich dann zum Beispiel \li{private}. Den zusätzlichen Schreibaufwand finde ich gerade noch vertretbar, und man braucht nicht für jedes Schlüsselwort ein eigenes Makro.

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 18:10
NaZo
Schon klar, dass das so geht. Ich brauch auch nicht für JEDES Schlüsselwort einen Extrabefehl, aufgrund der thematischen Ausrichtung meiner Arbeit aber nun mal für diese vier.

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-06 21:27
Muelli
Haette nicht einfach sowas gereicht?
\newcommand{\private}{\code{private} } \renewcommand{\protected}{\code{protected} } \newcommand{\public}{\code{public} }
edit: Ach, wenn du "\private{}." machst, hast du vermlt. ein ungewuenschtes Leerzeichen vor dem Punkt…

RE: LATEX: Quellcode im Fließtext hervorheben 2010-05-07 10:54
NaZo
Nee, genau andersherum: \newcommand{\private}{\code{private} } führt zu ungewuenschten Leerzeichen vor Punkten, Kommas etc., wogegen \private{}. wunderbar funktionieren würden, wobei man das "{}" vor einem Punkt ja auch einfach weglassen könnte.

Meine Lösung^^ funktioniert aber in jedem Fall und mit minimalem Schreibaufwand. Genau das, was ich gesucht habe. [23]