[texworks] LaTeXmk issue with Mac OS X Yosemite (new OS)

Guillaume Cabanac guillaume.cabanac at univ-tlse3.fr
Tue Oct 21 11:23:26 CEST 2014

Hi Stefan,

> Interesting. This suggests that Tw does not know about the "real" $PATH
> (otherwise it should find latexmk in $PATH). But at the same time,
> QProcess::setEnvironment() doesn't seem to work, either, as Tw should
> append the paths listed in the preferences to $PATH before calling a
> typesetting tool, and as you showed with your env tool, that does not
> seem to be the case.
> Possibly related: after some googling, I found
> http://stackoverflow.com/questions/603785/environment-variables-in-mac-os-x
> It seems that in Mac OS, you can have different environment variables
> for GUI and for terminal apps. Thus, I would guess that Tw (as GUI app)
> does not get the environment you have in a terminal. I have no idea why
> this problem does not show up in TeXShop, though.
> Out of curiosity: can you reproduce the problem if you start TeXworks
> from the command line?

[~]$ open /Applications/TeX/TeXworks.app

When opening TW from the console like this, the PATH declared in my ~/.bash_profile is known from TW.

However, the paths I declare in the GUI under "Paths for TeX and related programs" are not set.  They don't seem to be passed to the process created to run the processing tool.

>> * * *
>> As a workaround, I managed to make LaTeXmk work successfully in TeXworks that way:
>>   1. put "/usr/texbin" in the GUI under "Paths for TeX and related programs"
>>   2. sudo ln -s /usr/texbin/pdflatex /usr/bin/pdflatex (as /usr/bin is passed to the process when typesetting)
>>   3. sudo ln -s /usr/texbin/bibtex /usr/bin/bibtex
>> ... A bit of tinkering that could prevent people from being stuck with this issue... until it gets fixed :-)
> Personally, I'd prefer to use a wrapper script for latexmk that simply
> sources .bash_profile (provided all other TeX programs work as expected)
> as that would avoid tinkering in system directories with sudo.

Sure, it's cleaner I admit.

> Anyway: as I don't have a Mac to test, I don't really know how to debug
> this further. One possibility would be to replace
>    QStringList env = QProcess::systemEnvironment();
>    QStringList binPaths = TWApp::instance()->getBinaryPaths(env);
> by
>    QStringList env = QProcess::systemEnvironment();
>    qDebug() << env;
>    QStringList binPaths = TWApp::instance()->getBinaryPaths(env);
>    qDebug() << env;
> in src/TeXDocument.cpp, recompile TeXworks, start it from the command
> line and observe the output (this should solve the question what
> environment Tw really picks up and how it is modified once and for all).
> But of course this requires compiling TeXworks from source...

It seems I don't have the proper developing environment (gcc 4.9 instead of gcc 4.0):

  g++-4.9: error: unrecognized command line option '-stdlib=libc++'
  g++-4.9: error: unrecognized command line option '-arch'

I'm sorry I can't investigate this further at the moment...

Anyways, thanks for your help!


More information about the texworks mailing list