2013-02-21 17 views
6

Podczas wytwarzania wyjście Latex z Matlab, użyłem następujących czynności w oknie poleceń :Publish na lateks z Matlab

publish('filename.m',struct('format','latex','showCode',false, ... 
     'maxWidth',3,'outputDir','Desktop')); 

Plik lateks wytwarzany ma szerokość grafiki zawsze 4in. Mimo że zmieniono maxWidth na 5, 6, 1000 itd., Szerokość grafiki pozostaje zawsze taka sama: 4in.

Jak mogę zmienić szerokość grafiki w lateksie bezpośrednio z Matlaba?

Odpowiedz

2

Wygląda na to, że opcja maxWidth wpływa tylko na obrazy pikselowe, takie jak png, bmp itp. Wpływa na rzeczywisty rozmiar obrazu, więc przy ustawieniu maxWidth na 3 otrzymasz obrazy o maksymalnej szerokości 3 pikseli. Nie jest kontrolowany przez sam format, na przykład argument width w html lub latex. Funkcja PUBLISH wykorzystuje format XML jako format pośredni i uważam, że jest to problem obecnego projektu schematu XML.

W formacie lateksu PUBLISH domyślnie używa sterownika drukarki epsc2 i tworzy obraz wektorowy w formacie EPS. Więc maxWidth jest po prostu ignorowany. Jeśli użyjesz ...'imageFormat','png',... w wywołaniu publikowania, zauważysz, że rozmiar pliku wyjściowego png zmienia się zgodnie z maxWidth. W każdym razie rozmiar obrazu w tekowym dokumencie będzie wynosił 4 cale (przy złej rozdzielczości obrazu w przypadku niskiej wartości maksymalnej), jak określono w domyślnym arkuszu stylów dla lateksu.

Wygląda na to, że nie można zmienić tego zachowania w OPUBLIKUJ.

Możesz zmodyfikować arkusz stylów xml (matlabroot/toolbox/matlab/codetools/private/mxdoom2latex.xls).

Sprawdź na tych liniach:

<xsl:template match="img"> 
\includegraphics [width=4in]{<xsl:value-of select="@src"/>} 
</xsl:template> 

skopiować ten plik, modyfikować i określić nowy plik z stylesheet opcji.

Lub po prostu zmień argument szerokości w wyjściowych plikach .tex.