与平台无关的路径(在LaTex和Elisp中)?

时间:2011-03-09 16:59:33

标签: emacs latex path cross-platform elisp

我在Win7和Ubuntu上运行Emacs并尝试通过dropbox.com分享我的大部分配置。我仍然无法弄清楚如何以独立于平台的方式编写加载文件或图像的路径(例如)。

我镜像了两台机器上的目录结构,因此在主目录中相对路径应该可以解决。有没有办法通过一个没有if-clauses(如果系统......其他......)的单一路径实现这一点?

我试过〜/它有时工作,有时不工作。

'home'在Win7上设置,但必须在Win7上以%home%和ubuntu上的$ HOME(对吗?)进行处理。

我需要一个解决方案:

  • elisp code
  • 乳胶文件(地址图片,列表)

4 个答案:

答案 0 :(得分:3)

在Windows中,~解析为HOME环境变量设置的任何内容。我发现将HOME设置为C:\Users\username(在Win 7中)非常有用。这意味着我可以将我的.emacs文件放在那里,并且当我打开文件时~将引用其中的文件。

执行此操作后,您的elisp可以在Windows或Linux上将~作为主目录。

答案 1 :(得分:2)

我的.emacs顶部有一个设置测试操作系统,并相应地设置指向路径根目录的CONST。然后,在配置中,我只是在路径语句中引用变量。刚刚在OS X和Windows 7上测试过。

以下是一些例子:

(defconst HOME_DIR 
  (if (eq system-type 'darwin)
      (concat "/Users/" (getenv "USER"))
    (concat "c:/cygwin/home/" (getenv "USER")))
  "Home directory. I could rely on the HOME environment variable,
  but I'm being retentive.")

(defconst EMACS_PKGS (concat HOME_DIR "/emacs-pkgs")
  "Directory for the emacs pkgs and configuration files.
 Default uses `HOME_DIR' as a prefix")

;; isolate customize settings
(setq custom-file (concat EMACS_PKGS "/emacs-custom.el"))

答案 2 :(得分:0)

我在Windows上使用Emacs的经验是~不在C:\ Users \ yourusername。对我来说,它在C:\ Users \ rafe \ AppData \ Roaming中。因此,对于Emacs的情况,如果您删除文件,例如%HOME%\ AppData \ Roaming(或者,在Windows Emacs中,~),您将可以访问这些文件。这是我的.emacs默认情况下的地方,至少。您的系统上的路径可能有所不同,因此请在尝试查找文件并键入~/时查看Emacs将您带到哪里。

该设置可能是可配置的,但我从未关心改变它。

对于LaTeX,遗憾的是我无能为力。

答案 3 :(得分:0)