學習重點 過去完成式:had + 過去分詞,表示在過去某個參考時點之前,動作已經完成。 過去完成進行式:had been + V-ing,強調動作持續到過去某個時點,常用來說明過去結果的原因。 before、after 先判斷時間順序,不能看到連接詞就機械地套用時態;順序明確時,過去簡單式也可能成立。 未來完成式:will / shall have + 過去分詞,表示到未來某個時點,將已完成某事,或已累積某段期間。 條件句須同時看語意與語氣;read 的現在式與過去式拼法相同,不能只憑字形判斷。 核心觀念 一、先找參考時點,再選完成式 完成式的重點是「在某個參考時點之前」。參考點在過去,用過去完成式;參考點在未來,用未來完成式。for + 一段時間只表示期間,本身不能決定時態。 時態結構表達重點 過去完成式had + p.p.到過去某時點,已完成或已累積的情況 過去完成進行式had been + V-ing到過去某時點,一直持續的活動 未來完成式will / shall have + p.p.到未來某時點,將已完成或累積的情況 p.p. 代表過去分詞。注意不規則變化,例如 run—ran—run、send—sent—sent;have 後面要接 run,不能接 ran。 二、過去完成式:回頭交代更早的事 故事主線常用過去簡單式;若回頭交代主線之前發生的事情,就可用過去完成式。例如某人當時坐著、凝視遠方,心中想起別人先前說過的話,先前的話便屬於「過去的過去」。 否定結構是had not + p.p.,例如 He had not realized the danger.,表示他在那個過去時點之前尚未察覺危險。若空格後面已經有 not realized,只需補入 had。 had realized 是主動,had been realized 是被動。「人察覺某事」以人為主詞時用主動;不能因為看到完成式,就任意加入 been。has not realized 則以現在為參考點,不符合回溯過去經驗的敘事語境。 三、before、after:順序與時態分開判斷 結構時間先後過去敘事的常見搭配 A after BB 先,A 後A 用過去式,B 可用過去完成式 A before BA 先,B 後A 可用過去完成式,B 用過去式 例如「送出文件之後才發現錯誤」,送出在先、發現在後,可寫成 The mistake was discovered after she had submitted the document.。在這種過去語境中,若選項只有現在式、現在完成式、現在進行式與過去完成式,應選過去完成式。 不過,before、after 已清楚交代先後時,兩個動作也常可都用過去簡單式。例如描述火災在撲滅之前已奪走人命,主句用 had claimed 能強調「在撲滅之前已經發生」,用 claimed 也成立。 連接詞子句可以移到句首,時間關係仍然相同。因此應記「before 子句所述事件較晚」,不要只記「before 前面的字較早」。此外,claim lives表示「奪走生命」;以火災為主詞時,火災是動作的執行者,要用主動語態。 四、過去完成進行式:持續活動造成過去結果 had been + V-ing強調某項活動在過去參考點之前已持續一段時間。例如 The ground was muddy because it had been raining for days.,先持續下雨,後來地面泥濘。 判斷時把三項線索連起來:過去的結果、之前的原因、持續的期間。下雨數週造成淹水,正適合用 had been raining,凸顯長時間累積的影響。 was raining 著重過去某時正在下雨;had been raining 著重此前已持續下雨。過去進行式也能描述持續活動,但在強調「此前已下了數週、造成後來淹水」的語境中,過去完成進行式最貼切。has rained 則以現在為參考點,不符合此處的過去敘事。 五、未來完成式:到未來某時點將已完成 will have + p.p.可表達完成的成果,也可表達累積的期間。第一人稱 I、we 在較傳統的用法中,也可使用 shall have + p.p.。 時間線索判斷重點 by next Sunday到下週日為止,將已完成或累積 by this time next year到明年此時為止,將已完成或累積 before my next birthday在下次生日前完成 by the time + 現在式子句到子句所述的未來事件發生時,主句動作將已完成 例如到未來某日將住滿三個月,或到明年此時將住滿五年,重點都是從較早時間累積到未來參考點,可用 will have stayed、will have lived。完成式不代表屆時一定搬走,之後仍可能繼續居住。 by 表示「到……為止」;before 表示「在……之前」。兩者都能提供完成期限,但不是看到這些字就一定只能用完成式,仍須看句子是否強調屆時已完成或已累積。 另外,finish 後面接動名詞,故「將已完成寫作」是 will / shall have finished writing。finished 屬於完成式結構,writing 則是 finish 的受詞。 六、by the time 子句用現在式表示未來 描述未來事件時,by the time 引導的時間副詞子句通常用現在簡單式代替未來式,主句再依語意使用未來完成式。 例如 By the time the train arrives, we will have finished lunch.:火車抵達時,我們將已吃完午餐。子句用 arrives,主句用 will have finished。若句子後面已給 run,空格只需填 will have,合起來才是 will have run。 七、條件句:區分指定答案與一般規則 would have + p.p.可在適當的假設語境中表達假設性的完成結果。不過,不能把「if 子句用過去式」直接等同於「主句必須用 would have + p.p.」。一般與現在或未來事實相反的假設,主句常用 would + 原形動詞;與過去事實相反的假設,則常用 if + had + p.p. 搭配 would have + p.p.。 對於「若再讀一遍,累計便讀過四遍」這類表達,本單元採用的答案是 would have read。但 read 的現在式與過去式同形,僅憑這個字無法確定是假設語氣;若表達實際可能發生的未來條件,shall / will have read 也能合理表達累計結果。應保留此處的答案設定,避免推成通用文法規則。 常考陷阱 只看 for 就選完成式:for 表示期間,必須再找參考時點。過去結果配合持續原因,考慮 had been + V-ing;未來截止點配合累積期間,考慮 will have + p.p.。 未來參考點卻選 have lived:現在完成式以現在為參考點;「到明年此時已住滿多久」須把參考點移到未來。 忽略完成語意而選 will stay、will live:簡單未來式只陳述未來情況,未明確表達「屆時已累積多久」。 把 will be lived 當成未來完成式:未來完成式是 will have lived。表示「居住在此」的 live、stay,在這種用法中不能改成被動。 任意加入 been:had been raining 是完成進行式;had been realized 是完成被動式。要看後面接 V-ing 還是過去分詞,以及主詞與動作的關係。 認為 before 只能搭配 had:順序已清楚時,過去簡單式也可能正確;須一併檢查語意與主被動。 誤判條件句:read 字形不能區分現在與過去;「if + 過去式」也不會自動要求 would have + p.p.。 記憶口訣 過去之前 had,未來之前 will have。 持續到過去,had been 加 ing。 for 看期間,時態看終點。 時間子句現在式,主句表達未來事。