2017-10-14 9 views
0

J'ai écrit des lignes de code Scilab qui génèrent une matrice. C'est une fonction dont l'argument est un vecteur contenant deux entiers positifs et qui renvoie une matrice de taille les valeurs du vecteur, selon un algorithme. La fonction exporte également la matrice à un chiffre dans le style LaTeX, grâce à la fonction prettyprint.Ajuster la taille de la figure dans Scilab avec la fonction xs2pdf

Je voudrais que cette figure soit exportée vers un fichier PDF, pour lequel j'ai utilisé la fonction xs2pdf. Cela fonctionne presque bien. Le problème est que, lorsqu'elle sert son but, la fonction génère une matrice de taille autour de 40x40, et elle ne tient jamais sur la page. Il me semble que le document PDF créé n'est même pas A4.

je ne comprend pas tout le code, tout ce que vous devez savoir est que le code génère une matrice nommée z, puis-je avoir les lignes:

//just for this post 

z=rand(40,40) 

//export to figure 

A=prettyprint(z) ; 

clf ; 

xstring(0,0,A) ; 

//export to PDF 

xs2pdf(0, '_path_to_pdf_file') ; 

La matrice z est créée ici pour simuler la matrice que mon programme génère réellement. Si vous exécutez ce code, après avoir rempli le bit '_path_to_pdf_file', obtenez-vous une sortie PDF décente?

Répondre

1

Je pourrais reproduire le même problème. Parfois, la sortie PDF n'est même pas générée et Scilab renvoie une erreur. Une solution de contournement consiste à faire Scilab créer un nouveau fichier TeX et compilez-le avec pdflatex en dehors de Scilab. La bonne partie est que vous pouvez tout exécuter à partir du même script Scilab. Bien sûr, vous aurez besoin d'une distribution LaTeX installée.

r = 40; c = 40; 
z = rand(r,c); 
A = prettyprint(z) ; 

texfile = "\documentclass{standalone}" + ... 
      "\usepackage{graphics}" + ... 
      "\usepackage{amsmath}" + ... 
      "\setcounter{MaxMatrixCols}{"+ string(c) +"}" + ... 
      "\begin{document}" + ... 
      A + ... 
      "\end{document}" 

filename = "matrix.tex"; 
write(filename,texfile)  //write() cannot overwrite a file 
dos("pdflatex " + filename) //use unix() instead of dos() in case you're not on Windows 

Je ne sais pas si vous avez une connaissance de LaTeX, donc je dois faire quelques notes:

  • La sortie pour accéder au répertoire courant Scilab. Tous les fichiers auxiliaires produits par LaTeX y seront également créés.
  • Il utilise la classe standalone, qui rogne la sortie PDF exactement à tout ce qui est décrit dans le fichier .tex. Dans ce cas, seule la matrice est imprimée, sans marges. Pour utiliser cette classe, vous devez avoir installé le paquet standalone pour LaTeX.
  • prettystring() sort la matrice en utilisant pmatrix, ce qui nécessite le package amsmath, vous devez donc également avoir installé celui-ci.
  • La ligne \setcounter{MaxMatrixCols}{c} est nécessaire dans le cas où vous avez une matrice de plus de 10 colonnes.

est ici la sortie: enter image description here

+0

Oui, c'est une alternative très convenable –