Discussion:
listing kodu z zewnetrznego pliku
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
_PepeR_
2004-08-31 07:45:47 UTC
Permalink
Witam,
Chcialbym do wstawiania fragmentow kodu zrodlowego w tekscie uzywac
pakietu listings, chocby z tego wzgledu, ze pogrubia słowa kluczowe.
Calosc obsluguje w nastepujacy sposob:

\lstset{language=C}
\lstinputlisting{code/opaque_auth.c}

Mam z tym nastepujace 2 problemy:
1) Jak dodac numeracje linii?? Znalazlem w jakims opisie tego pakietu,
ze jest to mozliwe, ale przyklad pokazywal jak to wykonac, gdy kod jest
obudowany przez \begin \end a nie z zewnetrznego pliku.
2) Chcialbym majac duzy plik zrodlowy wstawiac tylko jego fragmenty, np.
linie 40-50 tak by numeracja tych linii byla zgodna z rzeczywistoscia.
Jak to zrobic nie wycinajac tych linii z kodu do oddzielnego pliku?

Pozdrawiam,
--
-------------------------------------------------------------------------
Piotr '_PepeR_' Wojciechowski | "The trouble with being a god is that
NetAdmin @mlekomat.com.pl | you've got no one to pray to"
http://peper.eu.org GG: 484520 | -- (Terry Pratchett, Small Gods)
-----------JID:***@jabber.org-------------------------------*no-spam*--
voice
2004-08-31 08:01:05 UTC
Permalink
Przecież wszystko jest w dokumentacji...
texmf/doc/latex/listings/listings.pdf
Post by _PepeR_
1) Jak dodac numeracje linii??
\lstset{language=[ANSI]C, numbers=left, numberstyle=\tiny, stepnumber=2,
numbersep=5pt, basicstyle=\footnotesize, extendedchars=true}
Post by _PepeR_
2) Chcialbym majac
duzy plik zrodlowy wstawiac tylko jego fragmenty, np. linie 40-50 tak by
numeracja tych linii byla zgodna z rzeczywistoscia.
\lstinputlisting[firstline=40, lastline=50]{scheduler.h}

Pozdrawiam,
voice
--
unsigned int gg = 2627828;
_PepeR_
2004-08-31 08:18:07 UTC
Permalink
Post by voice
Przecież wszystko jest w dokumentacji...
texmf/doc/latex/listings/listings.pdf
Mam wybrakowany pakiet bo u mnie tego nie ma :)
Post by voice
Post by _PepeR_
1) Jak dodac numeracje linii??
\lstset{language=[ANSI]C, numbers=left, numberstyle=\tiny, stepnumber=2,
numbersep=5pt, basicstyle=\footnotesize, extendedchars=true}
Mozesz mi jeszcze podpowiedziec jak sprawic by numeracja byla wewnatrz
ramki tworzonej naokolo kodu parametrem frame=ltrb ?? Da sie to zrobic
bez redefinicji calego stylu ?
Post by voice
Post by _PepeR_
2) Chcialbym majac
duzy plik zrodlowy wstawiac tylko jego fragmenty, np. linie 40-50 tak by
numeracja tych linii byla zgodna z rzeczywistoscia.
\lstinputlisting[firstline=40, lastline=50]{scheduler.h}
W dokumentacji, ktora ja znalazlem bylo to za pomoca [40,50] robione i
na taki sposob sie u mnie LaTeX psul. Widac to bylo do jakiejs starej wersji

Pozdrawiam,
--
-------------------------------------------------------------------------
Piotr '_PepeR_' Wojciechowski | "The trouble with being a god is that
NetAdmin @mlekomat.com.pl | you've got no one to pray to"
http://peper.eu.org GG: 484520 | -- (Terry Pratchett, Small Gods)
-----------JID:***@jabber.org-------------------------------*no-spam*--
voice
2004-08-31 08:38:04 UTC
Permalink
Post by _PepeR_
Post by voice
Przecież wszystko jest w dokumentacji...
texmf/doc/latex/listings/listings.pdf
Mam wybrakowany pakiet bo u mnie tego nie ma :)
Pogooglaj, w sieci na pewno gdzieś leży! ;)
Post by _PepeR_
Post by voice
Post by _PepeR_
1) Jak dodac numeracje linii??
\lstset{language=[ANSI]C, numbers=left, numberstyle=\tiny, stepnumber=2,
numbersep=5pt, basicstyle=\footnotesize, extendedchars=true}
Mozesz mi jeszcze podpowiedziec jak sprawic by numeracja byla wewnatrz
ramki tworzonej naokolo kodu parametrem frame=ltrb ?? Da sie to zrobic bez
redefinicji calego stylu ?
Niestety, nie wiem jak to zrobić. Nie mam za bardzo czasu grzebać w
dokumentcji... Musisz sam poszukać.
Post by _PepeR_
Post by voice
\lstinputlisting[firstline=40, lastline=50]{scheduler.h}
W dokumentacji, ktora ja znalazlem bylo to za pomoca [40,50] robione i
na taki sposob sie u mnie LaTeX psul. Widac to bylo do jakiejs starej wersji
Mam listings w wersji 1.2 z 2004/02/13, może masz rzeczywiście coś
starszego.

Pozdrawiam,
voice
--
unsigned int gg = 2627828;
_PepeR_
2004-08-31 09:27:17 UTC
Permalink
Post by voice
Post by _PepeR_
Post by voice
Przecież wszystko jest w dokumentacji...
texmf/doc/latex/listings/listings.pdf
Mam wybrakowany pakiet bo u mnie tego nie ma :)
Pogooglaj, w sieci na pewno gdzieś leży! ;)
Googlam wlasnie w innej sprawie ale tez nie moge znalesc. Postanowilem
dumnie obudowac calosc za pomoca \newcommand tak by latwo bylo z tego
korzystac. Problem w tym, ze z tego co czytam w dokumentacji \newcommand
nie moze uzywac argumentow w parametrach wykorzystywanych funkcji.
Zrobilem cos takiego:

\newcommand{\ListingKodu}[3]{\lstset{language=C,basicstyle=\normalsize,
keywordstyle=\ttfamily\color{OliveGreen},
identifierstyle=\ttfamily\color{CadetBlue}\bfseries,
commentstyle=\color{Brown},
stringstyle=\ttfamily,
showstringspaces=true,numbers=left, stepnumber=1,
numbersep=5pt}
\lstinputlisting[firstline=#1, lastline=#2]{#3}}

Niestety LaTeX pluje sie:

[21] (/usr/src/linux/include/linux/nfs3.h)
! Missing number, treated as zero.
<to be read again>
\@@par

I nie wiem wlasnie czy ja cos zle zdefiniowalem czy poprostu nie mozna w
ten sposob przekazywac argumentow do \lstinputlisting czy jakiegokolwiek
innego polecenia.
Wywolywac probowalem na rozne sposoby:

\ListingKoduNumSelect[67,81]{/usr/src/linux/include/linux/nfs3.h}
\ListingKoduNumSelect{67,81,/usr/src/linux/include/linux/nfs3.h}

Ale tak nie dziala.
Post by voice
Mam listings w wersji 1.2 z 2004/02/13, może masz rzeczywiście coś
starszego.
Wersje mam ta sama tylko dokumentacja i przyklady znalezione przez
google byly do starszej wersji i jak widac zmienilo sie cos od tamtego
czasu :)

Pozdrawiam,
--
-------------------------------------------------------------------------
Piotr '_PepeR_' Wojciechowski | "The trouble with being a god is that
NetAdmin @mlekomat.com.pl | you've got no one to pray to"
http://peper.eu.org GG: 484520 | -- (Terry Pratchett, Small Gods)
-----------JID:***@jabber.org-------------------------------*no-spam*--
voice
2004-08-31 10:41:54 UTC
Permalink
Post by _PepeR_
Googlam wlasnie w innej sprawie ale tez nie moge znalesc. Postanowilem
dumnie obudowac calosc za pomoca \newcommand tak by latwo bylo z tego
korzystac. Problem w tym, ze z tego co czytam w dokumentacji \newcommand
nie moze uzywac argumentow w parametrach wykorzystywanych funkcji.
\newcommand{\ListingKodu}[3]{\lstset{language=C,basicstyle=\normalsize,
keywordstyle=\ttfamily\color{OliveGreen},
identifierstyle=\ttfamily\color{CadetBlue}\bfseries,
commentstyle=\color{Brown},
stringstyle=\ttfamily,
showstringspaces=true,numbers=left, stepnumber=1,
numbersep=5pt}
\lstinputlisting[firstline=#1, lastline=#2]{#3}}
Coś pomieszałeś... \lstset wywołujesz tylko raz, w preambule, a nie za
każdym razem gdy chcesz umieścić i treści jakiś listing.

#v+
\documentclass[a4paper,11pt]{book}
\usepackage[latin2]{inputenc}
\usepackage{polski}
\usepackage{listings}
\lstset{language=[ANSI]C,numbers=left, numberstyle=\tiny, stepnumber=1,
numbersep=5pt, basicstyle=\small}

\begin{document}
\lstinputlisting[firstline=40, lastline=50]{jakis_kod.c}
\end{document}
#v-

Pozdrawiam,
voice
--
unsigned int gg = 2627828;
_PepeR_
2004-08-31 16:45:57 UTC
Permalink
Post by voice
Coś pomieszałeś... \lstset wywołujesz tylko raz, w preambule, a nie za
każdym razem gdy chcesz umieścić i treści jakiś listing.
Ja czytalem ze za kazdym razem jak zmieniasz sposob listowania kodu czy
kolorowania jego skladni. Ja mam zrodla w C/C++ i Javie i za kazdym
razem redefiniuje sposob listowania. Co nadal nie zmienia postaci rzeczy
ze nie wiem jak za pomoca \newcommand przekazac argumenty firstline i
lastline.

Pozdrawiam,
--
-------------------------------------------------------------------------
Piotr '_PepeR_' Wojciechowski | "The trouble with being a god is that
NetAdmin @mlekomat.com.pl | you've got no one to pray to"
http://peper.eu.org GG: 484520 | -- (Terry Pratchett, Small Gods)
-----------JID:***@jabber.org-------------------------------*no-spam*--
voice
2004-08-31 20:09:12 UTC
Permalink
Post by _PepeR_
Post by voice
Coś pomieszałeś... \lstset wywołujesz tylko raz, w preambule, a nie
za każdym razem gdy chcesz umieścić i treści jakiś listing.
Ja czytalem ze za kazdym razem jak zmieniasz sposob listowania kodu czy
kolorowania jego skladni.
Racja, mea culpa.
Post by _PepeR_
Ja mam zrodla w C/C++ i Javie i za kazdym razem
redefiniuje sposob listowania. Co nadal nie zmienia postaci rzeczy ze nie
wiem jak za pomoca \newcommand przekazac argumenty firstline i lastline.
Cóż, cieanias ze mnie LaTeXowy... Niestety nie wiem co Ci poradzić. Może
pomoże ktoś bardziej zorientowany?

Pozdrawiam,
voice

Loading...