2012-06-26 34 views
14

Es posible convertir la fuente de un gráfico de matlab en el mismo tipo de fuentes de látex. Por ejemplo, yo puedo modificar la fuente de una parcela por:Fuentes de látex en matlab

x = -pi:.1:pi; 
y = sin(x); 
plot(x,y) 
set(gca,'FontName','Helvetica'); 

¿Es posible hacer lo mismo pero para las fuentes de látex (digo fuentes de látex ya que no estoy seguro del nombre real de la fuente de látex utiliza como su fuente básica).

+0

Una buena solución es utilizar matlabfrag. http://www.mathworks.com/matlabcentral/fileexchange/21286-matlabfrag –

Respuesta

11

Para cualquier objeto de texto solo necesita establecer la propiedad 'Interpreter' en 'latex'. Así, por ejemplo, usted podría hacer

xlabel('$$\int_0^x\!\int_y dF(u,v)$$','Interpreter','latex'); 

Para etiquetas señalizadoras que es more difficult, aunque puede haber archivos disponibles para hacer más fácil (example).

2

Puede definir la fuente dentro de las cadenas de látex. Por ejemplo, para cambiar entre el tipo de letra serif (romana) y la fuente sans serif (Helvetica, supongo):

text(0.5, 0.8, '\textsf{sans serif}','interpreter','latex') 
text(0.5, 0.7, '\textrm{roman}','interpreter','latex') 
text(0.5, 0.6, '$$\mathsf{math\,\,mode\,\,sans\,\,serif}$$','interpreter','latex') 
text(0.5, 0.5, '$$\mathrm{math\,\,mode\,\,roman}$$','interpreter','latex') 
+2

Al emitir el primer comando, recibo "Advertencia: Error al actualizar el texto. La fuente cmss10 no es compatible". en R2016a. – bers

2

Por cierto juego de fuentes (incluyendo el ajuste entre caracteres de estilo LaTeX, ligaduras, etc.), el texto de la La figura de Matlab necesita ser compilada con LaTeX. El laprint script, que usa psfrag, es una forma sencilla de hacerlo.

5

me gustaría recomendar el establecimiento de la intérprete por defecto al látex en el comienzo de su script/función:

set(0,'defaulttextinterpreter','latex') 

Puede también download a version of Computer Modern (el látex Font Family) e instalarlo en su máquina. Las técnicas pueden variar si se está ejecutando Windows o Mac, para Mac tendrá que descargar la versión OTF y añadirlo a la FontBook (Cmd + Espacio: FontBook)

A continuación, reinicie Matlab

Por último, se puede utilizar el látex de fuente en Matlab:

set(0,'DefaultTextFontname', 'CMU Serif') 
    set(0,'DefaultAxesFontName', 'CMU Serif') 

Este es un buen trabajo en torno a tener constantes fuentes en sus casillas de etiquetas, although it has some trouble exporting in some formats.

0

Si usted tiene como objetivo la exportación de figuras de MATLAB en LaTeX y desea una apariencia similar (incluido el fuentes), debe usar matlab2tikz.

1

Si exporta a .eps puede simplemente editar la figura luego con un editor de texto simple e intercambiar las fuentes allí. Es un poco complicado pero funciona. También puede cambiar el interletraje de cada carácter individualmente (porque su posición está codificada allí).

También es posible cambiar la fuente de cada personaje individualmente (a veces hago esto, si una necesidad en un símbolo de látex (es decir, la computadora moderna), pero quiero que el resto de la etiqueta en Helvetica de nuevo)

2

responsabilidad: Yo no soy el experto.

Sin embargo, el comando fc-list de Linux enumera todas las fuentes en su sistema, creo que todas son compatibles con Matlab.

en Ubuntu (y posiblemente otras distribuciones de la fuente) látex se llama América moderna, o LM, para abreviar.Usted puede encontrar todos ellos a través de:

# fc-list | grep lmroman 
/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf: Latin Modern Roman,LM Roman 10:style=10 Bold,Bold 
/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf: Latin Modern Roman,LM Roman 7:style=7 Italic,Italic 
... etc etc... 

Entre los dos puntos y la primera coma dice América Modern Roman, que es el nombre de la fuente romana de América moderna, hay también:

  • América moderna Sans
  • latinos modernos de mayúsculas romanas
  • América moderna Mono
  • , etc, etc

Creo que estas fuentes se usan cuando llamas a \textrm (roman), \textsf (serif), etc, en latex en mathmode. Por supuesto, puede encontrarlos todos a través del comando fc-list.

Para instalar la fuente de látex en sus parcelas, sólo tiene que ejecutar:

plot(rand(10), 'o'); 
xlabel('index', 'FontName', 'Latin Modern Roman', 'FontSize', 25); 
ylabel('value', 'FontName', 'Latin Modern Roman', 'FontSize', 25); 
set(gca, 'FontName', 'Latin Modern Roman', 'FontSize', 25); 

Y el resultado es un bonito:

example plot

PS: América moderna no es exactamente el mismo que el ordenador Moderno, pero se parecen y no sabría cuánto difieren realmente.

En cuanto a la opción intérprete de Matlab, a lo mejor de mi conocimiento que no se aplica a todos los elementos textuales de una parcela, al igual que las etiquetas de hacha:

>> plot(rand(10), '.'); set(gca, 'Interpreter', 'latex'); 
Error using hg.axes/set 
The name 'Interpreter' is not an accessible property for an instance of class 'axes'. 

Desafortunadamente, la función de Matlab print está viciado, ya que es no puede insertar fuentes en archivos eps o pdf. Por esta razón, los archivos generados pueden tener fuentes sustituidas, incluso en el mismo sistema. Para solucionar esto, esta biblioteca le permite incrustar las fuentes: http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig

Asegúrese de establecer el fondo de su figura en blanco, antes de exportarlo y tenga en cuenta que la biblioteca puede llevar mucha memoria, como llama a ghostscript.

Por otra parte, cambiar el intérprete parece exagerado si desea cambiar la fuente.