此功能由 ayaka-notes/ayakaleaf-pro 開發,自 v6.4.0 起推出,目前仍處於 Beta 階段。如果您遇到任何問題,歡迎提供回饋。
Apps/<your Dropbox app>/ 中,在 Overleaf 中所做的變更會傳送至 Dropbox,而在 Dropbox 中所做的變更也會回傳至 Overleaf。
設定 Dropbox 同步
請以將擁有該應用程式的 Dropbox 帳號登入 Dropbox App Console,並建立應用程式:- 點擊 Create app,然後填寫頁面:
- 1. Choose an API:選擇 Scoped access。
- 2. Choose the type of access you need:選擇 App folder,而非 Full Dropbox。Overleaf 只會在應用程式的資料夾內進行同步。
- 3. Name your app:輸入名稱,例如
Overleaf。此名稱在 Dropbox 上必須是唯一的。每位使用者的專案都會出現在其 Dropbox 的Apps/<name of your app>/中,而此名稱即為下方的DROPBOX_APP_NAME。 - 點擊 Create app。應用程式會在 Settings 分頁中開啟。
- 在 Permissions 分頁的 Files and folders 下,勾選
files.metadata.write、files.content.write與files.content.read。account_info.read與files.metadata.read會隨之勾選,且無法取消勾選。請勿勾選其他權限。 - 點擊 Permissions 分頁底部列中的 Submit。若未點擊 Submit,權限就不會被儲存,Dropbox 也會拒絕為連結帳號的使用者同步檔案。

Dropbox App Console:需勾選的權限,並以 Submit 儲存
- 在 Settings 分頁的 OAuth 2 下,於 Redirect URIs 中輸入
${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback,然後點擊 Add。只輸入 URI 並不夠:只有當它出現在欄位上方的清單中時,才算儲存完成。

Dropbox App Console:輸入重新導向 URI,然後點擊 Add
- 在 Settings 分頁的 Webhooks 下,於 Webhook URIs 中輸入
${OVERLEAF_SITE_URL}/dropbox/webhook,然後同樣點擊 Add。Dropbox 會立即呼叫此網址進行檢查,因此 Overleaf 必須已使用下方的設定執行,且可從網際網路存取(請參閱 Webhook)。檢查通過後,其狀態會顯示為 Enabled。
config/variables.env
DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808。它必須是標準的 HTTP/HTTPS 正向代理伺服器,且不得使用 127.0.0.1。
Webhook
Dropbox 會透過 webhook 通知 Overleaf 在 Dropbox 中發生的變更,因此這些變更會在幾秒內出現在 Overleaf 中。Webhook 會傳送至您網站的位址${OVERLEAF_SITE_URL}/dropbox/webhook,不需要額外的連接埠,但 Dropbox 必須能從網際網路存取它。當您在 App Console 中加入 webhook 時,Dropbox 會立即進行檢查。
若沒有 webhook(例如在 Dropbox 無法存取的伺服器上),在 Overleaf 中所做的變更仍會傳送至 Dropbox,但在 Dropbox 中所做的變更只有在使用者於編輯器的 Dropbox 對話框中點擊「立即同步此專案」時才會回傳。
同步的運作方式
- 連結:當使用者連結 Dropbox 帳號時,其擁有的專案會傳送至 Dropbox。與其共用的專案會在下一次變更時出現在 Dropbox 中。
- Overleaf 至 Dropbox:新檔案、重新命名、移動、刪除與專案重新命名會立即傳送。在編輯器中所做的編輯,會在 Overleaf 將其儲存至儲存空間後傳送,也就是所有人離開專案幾分鐘後。若要提早傳送,請在編輯器的 Dropbox 對話框中點擊「立即同步此專案」(每分鐘一次)。
- Dropbox 至 Overleaf:專案資料夾中的新增與變更檔案、新資料夾及刪除都會套用至專案。在應用程式資料夾最上層新增的資料夾會成為新專案。在 Dropbox 中刪除專案資料夾,會在 Overleaf 中將該專案標記為已刪除。
- 衝突:當檔案同時在兩處被變更時,以最後一次變更為準。Dropbox 可能會將另一個版本保留為「衝突的複本」。
- 協作者:連結 Dropbox 的協作者會取得與其共用的專案。唯讀檢視者與審閱者也會取得專案,但他們在 Dropbox 中所做的變更不會同步回 Overleaf。
- 忽略的檔案:Overleaf 不會同步的檔案,例如建置輸出(
.aux、.log、…)、.DS_Store或 Python 虛擬環境,只會保留在 Dropbox 中。
Q&A
為什麼使用者無法連結其 Dropbox 帳號?
為什麼使用者無法連結其 Dropbox 帳號?
- 專案是依名稱對應至 Dropbox 資料夾,因此擁有兩個同名專案的使用者,會被要求先將其中一個重新命名。
- 一個 Dropbox 帳號只能連結至一個 Overleaf 帳號。
為什麼 Dropbox 帳號被解除連結?
為什麼 Dropbox 帳號被解除連結?
回答:當 Dropbox 拒絕其權杖(例如使用者在 Dropbox 中移除了該應用程式)、Dropbox 空間已滿,或 Dropbox 停用了該帳號時,Overleaf 會解除該 Dropbox 帳號的連結。問題解決後,使用者可以重新連結。
我可以在 Dropbox 中重新命名專案資料夾嗎?
我可以在 Dropbox 中重新命名專案資料夾嗎?
回答:請改為在 Overleaf 中重新命名專案。對 Overleaf 而言,在 Dropbox 中重新命名資料夾等同於刪除專案資料夾並建立新資料夾,因此舊專案會被標記為已刪除,並以這些檔案建立新專案。

