- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 10 mesi fa da .
-
Topic
-
Buongiorno a tutti
visto che è il mio primo post (e che non ho trovato un 3d per le presentazioni) scrivo 2 righe rapide..
Studio ingegneria meccanica (attualmente sto scrivendo la tesi triennale) e utilizzo LaTeX da un pò di tempo, anche se la necessità di fare sul serio ce l’ho avuta solo di recente (e, quindi, non ho tantissima esperienza).
Nello specifico nell’ultima settimana mi sono trovato nella situazione di dover consegnare un elaborato contenente listati MatLab.
Mi sono quindi messo all’opera e ho cominciato ad usare il pacchetto listings. Dopo svariati errori, prove, ricerche sulla rete, documentazione di listings non sono ancora riuscito a farlo funzionare come vorrei.
Ho isolato il problema nella contemporanea convivenza di [italian]{babel} e di listings. Posto le conclusioni a cui sono arrivato- Togliendo [italian]{babel} e inserendo il listato tramite \lstinputlisting funziona tutto perfettamente tranne, ovviamente, la sillabazione
- Inserendo [italian]{babel} e inserendo il listato tramite \begin{lstlisting} funziona tutto bene
- Inserendo [italian]{babel} e inserendo il listato con \lstinputlisting la compilazione non va a buon fine
questo l’errore./prova.tex:183: Missing \endcsname inserted.
\global
l.183 \lstinputlisting{“Scripts/elico.m”}
Ovviamente io vorrei far funzionare l’ultima modalità in maniera tale da:
- Avere il file.tex non di lunghezza chilometrica
- Se cambio il listato mi basta ricompilare il file invece di fare manualmente il copia incolla
Per la compilazione utilizzo TeXShop e ho installato MacTeX 2013
Di seguito il listato a cui basta, ovviamente, commentare le linee giuste per sperimentare le modalità sopra descritte. Vi ho risparmiato tutta la parte testuale del documento per non allungare troppo il brodo
Dato che a pezzi il codice funziona non riesco proprio a capire cosa c’è che non va e a nulla sono servite le ricerche che ho fatto in rete. Qualcuno ha qualche idea 😕 😕 😕Grazie in anticipo per le risposte 🙂
`
\documentclass[12pt,a4paper]{scrbook}\usepackage[T1]{fontenc}
\usepackage[latin1, applemac]{inputenc}
\usepackage{fourier} % Utilizza il font Adobe Utopia per il documento – commenta questa linea per tornare al font di default
\usepackage[italian]{babel}
\usepackage{amsmath,amsfonts,amsthm} % pacchetti matematici
\usepackage{graphicx} %pacchetti grafici
\usepackage{listings} % Pacchetto per leggere i listati
\usepackage[usenames,dvipsnames]{color} % Richiesto per salvare colori personalizzati\definecolor{DarkGreen}{rgb}{0.0,0.4,0.0} % Colore per i commenti
\definecolor{highlight}{RGB}{255,251,204} % colore per le parole evidenziate\lstset{ % Definisce uno stile per il codice. Si possono creare diversi stili per inserire diverse parti di codice da diversi linguaggi di programmazione nello stesso documento
language=Matlab, % Trova parole chiave, commenti, stringhe, funzioni, etc per il linguaggio specificato
backgroundcolor=\color{highlight}, % Imposta il colore di background – utile per gli highlight
basicstyle=\footnotesize\ttfamily, % imposta il font e la grandezza predefinita del codice
breakatwhitespace=false,
breaklines=true,
captionpos=b, % posizione per la didascalia: b for bottom; t for top
commentstyle=\usefont{T1}{pcr}{m}{sl}\color{DarkGreen}, % Stile dei commenti interni al codice – dark green courier font
deletekeywords={}, % Per cancellare determinate parole chiave. Separare con la ,
%escapeinside={\%*}{*)}, % Per ritornare al LateX in presenza dei caratteri specificati
extendedchars=true,
firstnumber=1, % Comincia la numerazione delle righe di codice da 1
frame=single, % Formato della code box: none, leftline, topline, bottomline, lines, single, shadowbox
frameround=tttt, % Angoli arrotondati per the top left, top right, bottom left and bottom right positions
inputencoding=latin1, %Imposta la codifica da utilizzare per il documento immesso (matlab utilizza il latin1)
keywordstyle=\color{Blue}\bf, % Le parole chiave sono blu e grassette
morekeywords={switch, warning, case, otherwise}, % Per aggiungere funzioni non incluse di default
numbers=left, % Posizione dei numeri di linea: none, left, right
numbersep=10pt, % Distanza dei numeri di linea dalla code box
numberstyle=\tiny\color{Gray}, % Stile utilizzato per i numeri
rulecolor=\color{black}, % Colore del bordo del frame box
showstringspaces=false, % Non inserire marks nelle stringhe
showtabs=false, % Mostra tabulatori come linee
stepnumber=5, % L'intervallo di linee tra una numerazione e la successiva
stringstyle=\color{Purple}, % Colore per le stringhe
tabsize=2, % Numero di spazi che formano la tabulazione
literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\'e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ò}{{\`u}}1
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ò}{{\`U}}1
{ä}{{\”a}}1 {ë}{{\”e}}1 {ï}{{\”i}}1 {ö}{{\”o}}1 {ü}{{\”u}}1
{Ä}{{\”A}}1 {Ë}{{\”E}}1 {Ï}{{\”I}}1 {Ö}{{\”O}}1 {Ü}{{\”U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{€}{{\EUR}}1 {£}{{\pounds}}1
}\begin{document}
\section*{Risoluzione del problema inverso tramite i parametri di Eulero per un moto elicoidale}Lo scopo dell’esercitazione
Di seguito il listato completo
%\begin{lstlisting}
%
%
%%% ALGORITMO PER LA VALIDAZIONE DELLA FUNZIONE elico_fun
%
%
%clc
%clear all
%
%%% Inizializzazione
%
%
%%Inizializzazione della matrice di rotazione e del vettore di traslazione
%A=zeros(3,3);
%d=zeros(3,1);
%theta=0;
%%Asse di rotazione
%u=zeros(3,1);
%%Punto dell'asse
%p0=zeros(3,1);
%%Distanza minima percorsa
%dp0=zeros(3,1);
%
%%% Impostazione dei dati
%
%%Codice per far scegliere all'utente il tipo di moto da analizzare,
%%immissione dei dati e risoluzione del problema diretto per il calcolo
%%della matrice A di rotazione
%
%disp('Inserire la tipologia di inserimento dati')
%type=input('1 per inserimento matrice / 2 per rotazione notevole / 3 predefinita / 4 calcolo: ');
%
%switch type
% case 1
% A=input('Inserire una matrice di rotazione A: ');
% d=input('Inserire la traslazione: ');
% case 2
% axisn=input('Rotazione attorno a x/y/z: ');
% switch axisn
% case 'x'
% axis=[1;0;0];
% anglegrad=input('Inserire angolo di rotazione [°]: ');
% angle=anglegrad*pi/180;
% A=[1,0,0;0,cos(angle),-sin(angle);0, sin(angle), cos(angle)];
% d=input('Inserire vettore di spostamento: ');
%
% case 'y'
% axis=[0;1;0];
% anglegrad=input('Inserire angolo di rotazione [°]: ');
% angle=anglegrad*pi/180;
% A=[cos(angle),0 sin(angle); 0,1,0;-sin(angle),0, cos(angle)];
% d=input('Inserire vettore di spostamento: ');
% case 'z'
% axis=[0;0;1];
% anglegrad=input('Inserire angolo di rotazione [°]: ');
% angle=anglegrad*pi/180;
% A=[cos(angle), sin(angle),0;-sin(angle), cos(angle),0;0,0,1];
% d=input('Inserire vettore di spostamento: ');
% otherwise
% warning ('nessun asse valido inserito')
% return
% end
% case 3
% A=[.5+sqrt(2)/4,.5-sqrt(2)/4 , .5;
% .5-sqrt(2)/4, .5+sqrt(2)/4, -.5;
% -.5, .5, sqrt(2)/2];
% d=[1;0;1];
% case 4
% anglegrad=input('Inserire angolo di rotazione [°]: ');
% angle=anglegrad*pi/180;
% axis=zeros(3,1);
% axis=input('Inserire asse di rotazione: ');
% %normalizzazione del vettore dell'asse
% axis=axis/norm(axis);
% d=input('Inserire vettore di spostamento: ');
% %parametri di eulero del problema diretto
% E=zeros(4,1);
% E(1,1)=cos(angle/2);
% E(2,1)=axis(1,1)*sin(angle/2);
% E(3,1)=axis(2,1)*sin(angle/2);
% E(4,1)=axis(3,1)*sin(angle/2);
% %Calcolo della matrice A
% A=2*[E(1,1)^2+E(2,1)^2-.5, E(2,1)*E(3,1)-E(1,1)*E(4,1), E(2,1)*E(4,1)+E(1,1)*E(3,1);
% E(2,1)*E(3,1)+E(1,1)*E(4,1), E(1,1)^2+E(3,1)^2-.5, E(3,1)*E(4,1)-E(1,1)*E(2,1);
% E(2,1)*E(4,1)-E(1,1)*E(3,1), E(3,1)*E(4,1)+E(1,1)*E(2,1), E(1,1)^2+E(4,1)^2-.5];
% otherwise
% warning('Nessun dato valido inserito')
% return
%end
%
%
%[theta, u, p0, dp0]=elico_fun(A,d);
%
%%% Risultati
%if type~=3
%fin=['Il moto inserito ha un angolo di rotazione pari a ', num2str(anglegrad)];
%fin1=['asse di rotazione di versore ', num2str(axis(1,1)),', ', num2str(axis(2,1)),', ', num2str(axis(3,1))];
%fin2=['vettore di spostamento ', num2str(d(1)),', ', num2str(d(2)),', ', num2str(d(3))];
%disp(fin)
%disp(fin1)
%disp(fin2)
%end
%fin3=['Il codice ha calcolato un angolo di rotazione pari a ', num2str(theta)];
%fin4=['un asse di rotazione di versore ' , num2str(u(1)),', ', num2str(u(2)),', ', num2str(u(3))];
%fin5=['il punto ', num2str(p0(1)),', ', num2str(p0(2)),', ', num2str(p0(3)), ' appartiene all asse di rotazione'];
%fin6=['il vettore di spostamento minimo è ', num2str(dp0(1)),', ', num2str(dp0(2)),', ', num2str(dp0(3))];
%disp(fin3)
%disp(fin4)
%disp(fin5)
%disp(fin6)
%\end{lstlisting}\lstinputlisting{“Scripts/elico.m”}
\end{document}
`
- Devi essere connesso per rispondere a questo topic.