- Questo topic ha 12 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 18 anni, 10 mesi fa da
karta.
-
CreatoreTopic
-
18 Giugno 2007 alle 18:22 #15376::
Salve a tutti son nuovo del forum e ringrazio anticipatamente tutti per la preziosa collaborazione che spero di ricevere.
Il mio problema è l’inserimento di un listato di programma in linguaggio assembler all’interno dell’appendice di una tesi.
Leggendo tra i vari post nè ho trovati alcuni siginficativi nei quali viene enunciata la possibilità di fare quello che è mia intenzione.Ho provato con questo nel preambolo:
`\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}
\usepackage[a4paper,top=3cm,left=3.5cm,right=2.5cm,bottom=2cm]{geometry}
\usepackage{latexsym}
\usepackage{listings}
\lsloadlanguages{Assembler}
\usepackage{graphics}`e questo nel file appendice.tex
`\begin{document}
\lsset{language=assembler}
\lstset{basicstyle=\footnotesize\sffamily}
\lstset{numbers=left,numberstyle=\tiny,stepnumber=1,numbersep=10pt}
\lstset{morecomment=[|]{//}}begin{lstlisting}
jkhfjkdhfk
\end{lstlisting}
\end{document} `come suggerito in un’altro post solamente modificando il tipo di linguaggio di programmazione da c a assembler ed in fase di compilazione mi dà tantissimi errori dei quali dal primo mi sembra di dedurre che la parola assembler non gli vada a genio.
Ho letto molti post a riguardo ma senza trovar soluzione così ho deciso di scrivere sul forum anche perchè i tempi son molto stretti.
-
CreatoreTopic
-
AutoreRisposte
-
-
18 Giugno 2007 alle 19:05 #15377::
`\documentclass{article}\usepackage{xcolor}
\usepackage{listings}\lstset{language=[LaTeX]TeX,
keywordstyle=\color{blue},
basicstyle=\small\ttfamily}\begin{document}
Qesto è un esempio di codice \LaTeX:
\begin{lstlisting}
\emph{parola} è diverso da \textit{parola}.
\end{lstlisting}\lstset{language=[x86masm]Assembler,%
keywordstyle=\color{green},
basicstyle=\small\ttfamily}Questo è un esempio in Assembler:
\begin{lstlisting}
foo JMP bar
\end{lstlisting}\end{document}`
ma sono sicuro che si può fare di meglio. Studia per bene la doc. di listings, è davvero ben fatta. Con listings puoi fare praticamente tutto quello che vuoi. Fra l’altro, ho visto che c’è una sezione che parla di come far convivere codice C e Assembler, che mi sembra fare al caso tuo.P.S. Il paccetto latexsym serve solo per retro-compatibilità, dubito che tu ne abbia bisogno. Graphics è proprio obsoleto: usa graphicx. Quei \begin{document} … \end{document} nel file appendice.tex non ci vanno: cerca “input” e “include” su una guida e/o sul forum.
Ciao,
L.
-
18 Giugno 2007 alle 19:21 #15378::
ho visto che c’è una sezione che parla di come far convivere codice C e Assembler, che mi sembra fare al caso tuo.
Il mio listato è solamente in assembler.
Quindi modificando preambolo in:
`\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}
\usepackage[a4paper,top=3cm,left=3.5cm,right=2.5cm,bottom=2cm]{geometry}
\usepackage{listings}
\lsloadlanguages{Assembler}
`e il file appendice.tex in:
`\lsset{language=assembler}
\lstset{basicstyle=\footnotesize\sffamily}
\lstset{numbers=left,numberstyle=\tiny,stepnumber=1,numbersep=10pt}
\lstset{morecomment=[|]{//}}begin{lstlisting}
LISTATO PROGRAMMA
\end{lstlisting}
`Dovrebbe funzionare invece mi dà sempre errore su Assembler messo nel preambolo. Cos’è che non và?
cerca “input” e “include” su una guida e/o sul forum
A cosa servono questi 2 comandi?per il listato o in sostituzione al graphics?
grazie per la rapida risposta
-
18 Giugno 2007 alle 19:37 #15379::
Prova a mettere
`[x86masm]Assembler`
al posto di
`Assembler`Tieni presente che se un linguaggio di listings non ti soddisfa, puoi crearne uno tu come vuoi.
I comandi \input e \include servono per strutturare il sorgente LaTeX in più parti, il pacchetto graphicx non c’entra niente: cerca su una guida di base, queste cose sono spiegate benissimo.
Ciao,
L.
-
19 Giugno 2007 alle 7:23 #15380::
Prova a mettere
Codice:
[x86masm]AssemblerNon mi funziona nemmeno così mi dà sempre errore, ho notato che premendo una volta invio mi dà un’altro errore con scritto Latex error: Missing \begin{document} non è che devo rimettere la parte che mi hai consigliato di togliere?
Potrebbe essere che abbia una versione non aggiornata del pacchetto?come posso controllare questa?
I comandi \input e \include servono per strutturare il sorgente LaTeX in più parti, il pacchetto graphicx non c’entra niente: cerca su una guida di base, queste cose sono spiegate benissimo.
La mia tesi essendo quasi al termine è già stata strutturata, stò usando uno scheletro di tesi già fatto e il file dell’appendice è già richiamato nel preambolo quindi non mi dovrebbero servire questi comandi!o sbaglio?
grazie per l’aiuto che mi stai dando
-
19 Giugno 2007 alle 8:11 #15381::
Prova a mettere
Codice:
[x86masm]AssemblerNon mi funziona nemmeno così mi dà sempre errore, ho notato che premendo una volta invio mi dà un’altro errore con scritto Latex error: Missing \begin{document} non è che devo rimettere la parte che mi hai consigliato di togliere?
Potrebbe essere che abbia una versione non aggiornata del pacchetto?come posso controllare questa?
I comandi \input e \include servono per strutturare il sorgente LaTeX in più parti, il pacchetto graphicx non c’entra niente: cerca su una guida di base, queste cose sono spiegate benissimo.
La mia tesi essendo quasi al termine è già stata strutturata, stò usando uno scheletro di tesi già fatto e il file dell’appendice è già richiamato nel preambolo quindi non mi dovrebbero servire questi comandi!o sbaglio?
grazie per l’aiuto che mi stai dando
Ho fatto come dice Lorenzo e va bene. La mia versione è 1.4 e non dà nessun errore.
Prova questo codice:
`
\documentclass{article}
\usepackage{listings}\lstset{%
language=[x86masm]Assembler,%
}\begin{document}
\begin{lstlisting}
ADD AH,BL
DIV AH,02H
\end{lstlisting}
\end{document}
`
per vedere la versione aggiungi \listfiles nel preambolo e vedi il log. Ti dà una lista di tutti i pacchetti usati con le relative versioni.Ciao
Andrea
-
19 Giugno 2007 alle 8:42 #15382::
Che splendore ora funziona tutto!!!Grazie mille…
Unico neo che rimane è che essendo il mio un assembler dedicato ai microprocessori microchip probabilmente si discosta un pò dalla sintassi tradizionale e cosi alcune parole vengono colorate in modo sbagliato.
Che voi sappiate listings supporta l’assembler microchip?
-
19 Giugno 2007 alle 8:53 #15383::
Che voi sappiate listings supporta l’assembler microchip?
Se tu avessi ascoltato il mio consiglio e avessi letto la documentazione di listings, avresti scoperto che con listings puoi fare quello che vuoi. Puoi aggiungere nuove parole chiave, o crearti ex-novo un linguaggio.
`\lstdefinelanguage{rock}
{morekeywords={one,two,three,four,five,six,seven,eight,
nine,ten,eleven,twelve,o,clock,rock,around,the,tonight},
sensitive=false,
morecomment=[l]{//},
morecomment={/*}{*/},
morestring=“,
}
`
…e tante altre cose ancora.L.
-
19 Giugno 2007 alle 8:57 #15384::
Che splendore ora funziona tutto!!!Grazie mille…
Unico neo che rimane è che essendo il mio un assembler dedicato ai microprocessori microchip probabilmente si discosta un pò dalla sintassi tradizionale e cosi alcune parole vengono colorate in modo sbagliato.
Che voi sappiate listings supporta l’assembler microchip?Ci sono due varianti, leggi a pag 12 della documentazione di listings
ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/listings/listings.pdfuna è x86masm e l’altra Motorola 68k.
Se nessuna delle due ti soddisfa, allora creati un nuovo linguaggio.
Ad esempio, ugaciaka ha creato un nuovo tipo di stile per l’sql
Guarda questo topic e lggiti la doc. di listings
http://www.guit.sssup.it/phpbb/viewtopic.php?t=2539&start=0&postdays=0&postorder=asc&highlight=sqlCiao,
Andrea
-
19 Giugno 2007 alle 9:13 #15385::
Se nessuna delle due ti soddisfa, allora creati un nuovo linguaggio.
Ad esempio, ugaciaka ha creato un nuovo tipo di stile per l’sql
Guarda questo topic e lggiti la doc. di listings
http://www.guit.sssup.it/phpbb/viewtopic.php?t=2539&start=0&postdays=0&postorder=asc&highlight=sqlProprio cosi si tratta di alcune parole che non vengono interpretate come comandi quindi probabilmente mi dovrebbe bastare scrivere:
`\lstset{…,
morekeywords={…},
} `e inserire le parole che colora in modo sbagliato!
Ma dove devo mettere questa stringa?grazie ancora tanto
-
19 Giugno 2007 alle 10:40 #15386::
Dato che non so come modificare le parole chiave già presenti in linguaggi già caricati, in questo caso [x86masm]Assembler, ti riporto un esempio su come creare un linguaggio assembler di tuo gradimento:`
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\lstdefinelanguage{ASM}
{ morekeywords={al,ah,ax,eax,bx,ebx,cx,ecx,dl,dx,edx,%
si,esi,di,edi,bp,ebp,sp,esp,cs,ds,es,ss,fs,gs,cr0,cr1,cr2,cr3,%
db0,db1,db2,db3,db4,db5,db6,db7,tr0,tr1,tr2,tr3,tr4,tr5,tr6,tr7,%
st,aaa,aad,aam,aas,adc,and,arpl,bound,bsf,bsr,bswap,bt,btc,%
btr,bts,call,cbw,cdq,clc,cld,cli,clts,cmc,cmp,cmps,cmpsb,cmpsw,%
cmpsd,cmpxchg,cwd,cwde,daa,das,dec,div,enter,hlt,idiv,imul,in,%
inc,ins,int,into,invd,invlpg,iret,ja,jae,jb,jbe,jc,jcxz,jecxz,%
je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,%
jno,jnp,jns,jnz,jo,jp,jpe,jpo,js,jz,jmp,lahf,lar,lea,leave,lgdt,%
lidt,lldt,lmsw,lock,lods,lodsb,lodsw,lodsd,loop,loopz,loopnz,%
loope,loopne,lds,les,lfs,lgs,lss,lsl,ltr,mov,movs,movsb,movsw,%
movsd,movsx,movzx,mul,neg,nop,not,or,out,outs,pop,popa,popad,%
popf,popfd,push,pusha,pushad,pushf,pushfd,rcl,rcr,rep,repe,%
repne,repz,repnz,ret,retf,rol,ror,sahf,sal,sar,sbb,scas,seta,%
setae,setb,setbe,setc,sete,setg,setge,setl,setle,setna,setnae,%
setnb,setnbe,setnc,setne,setng,setnge,setnl,setnle,setno,setnp,%
setns,setnz,seto,setp,setpe,setpo,sets,setz,sgdt,shl,shld,shr,%
shrd,sidt,sldt,smsw,stc,std,sti,stos,stosb,stosw,stosd,str,sub,%
test,verr,verw,wait,wbinvd,xadd,xchg,xlatb,xor,fabs,fadd,fbld,%
fbstp,fchs,fclex,fcom,fcos,fdecstp,fdiv,fdivr,ffree,fiadd,ficom,%
fidiv,fidivr,fild,fimul,fincstp,finit,fist,fisub,fisubr,fld,fld1,%
fldl2e,fldl2t,fldlg2,fldln2,fldpi,fldz,fldcw,fldenv,fmul,fnop,%
fpatan,fprem,fprem1,fptan,frndint,frstor,fsave,fscale,fsetpm,%
fsin,fsincos,fsqrt,fst,fstcw,fstenv,fstsw,fsub,fsubr,ftst,fucom,%
fwait,fxam,fxch,fxtract,fyl2x,fyl2xp1,f2xm1},%
morekeywords=[2]{.align,.alpha,assume,byte,code,comm,comment,.const,%
.cref,.data,.data?,db,dd,df,dosseg,dq,dt,dw,dword,else,end,endif,%
endm,endp,ends,eq,equ,.err,.err1,.err2,.errb,.errdef,.errdif,%
.erre,.erridn,.errnb,.errndef,.errnz,event,exitm,extrn,far,%
.fardata,.fardata?,fword,ge,group,gt,high,if,if1,if2,ifb,ifdef,%
ifdif,ife,ifidn,ifnb,ifndef,include,includelib,irp,irpc,label,%
.lall,le,length,.lfcond,.list,local,low,lt,macro,mask,mod,.model,%
name,ne,near,offset,org,out,page,proc,ptr,public,purge,qword,.%
radix,record,rept,.sall,seg,segment,.seq,.sfcond,short,size,%
.stack,struc,subttl,tbyte,.tfcond,this,title,type,.type,width,%
word,.xall,.xcref,.xlist},%
morekeywords=[3]{add,bl,bh},
morekeywords=[4]{dh,ch,cl},
alsoletter=.,alsodigit=?,%
sensitive=f,%
morestring=“,%
morestring=',%
morecomment=[l],%
keywordstyle=[3]{\bfseries\color{red}},
keywordstyle=[4]{\bfseries\color{gray}},
}
\lstset{%
language=ASM,
numbers=left,stepnumber=1,numberstyle=\tiny,
}%\begin{document}
\begin{lstlisting}
SUB AH,BL
DIV AH,02H
ADD BH,AL
MUL DH,CL
\end{lstlisting}
\end{document}`
ho tolto add,ch,cl,dh,bl e bh dal primo morekeywords e li ho messi in altri 2 tipi separati.
In tutto sono 4 come puoi leggere dai numeri tra parentesi quadre.E’ un esempio demenziale ma dovrebbe parti capire come si può creare un nuovo tipo di linguaggio.
Ciao
Andrea
-
9 Novembre 2007 alle 7:16 #15387::
Ho provato a fare le operazioni scritte nell’ultimo post. in Particolare ho fatto:
`
\usepackage{listings}
\lstdefinelanguage{ASM}
{ morekeywords={bset,bclr,cp,cpi,mov},%
\lstset{%
language=ASM,
}%
\begin{document}
…..
\appendix
\section{Primo appendice}
\begin{lstlisting}
bset w0,5
mov w0,w3
\end{lstlisting}
\begin{thebibliography}
…
\end{document}
`Tuttavia solo il mov è in grassetto come parola chiave. bset no. come mai?
Grazie!
-
9 Novembre 2007 alle 7:39 #15388
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.