

一:由於需求需要完成題庫系統,用戶上傳word的試卷,試卷中包含數學、化學、物理公式(OMML),圖片以及帶有公式圖片的復雜表格,將word試卷系統拆分成一個一個的題目,題目中包含(題目類型、題文、選項、答案、解析)並保持基本樣式不失真
1:需要解析的word格式(數學公式有三種格式:OMML ->MathML -> Latext,本案例解析word中公式用MathML格式傳給前端,再使用MathJax.js進行頁面渲染)
2:解析出來題目的Json格式
[ { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】<table border=1><tr><td><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi></mrow></msup><msup><mrow><mi>a</mi></mrow><mrow><mi>m</mi></mrow></msup><mo>=</mo><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi><mo>+</mo><mi>m</mi></mrow></msup></math></td><td>≌∏█♀</td><td><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mi>a</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>+</mo><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>=</mo><msup><mrow><mi>c</mi></mrow><mrow><mn>2</mn></mrow></msup></math></td></tr></table>若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是( )<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mfrac><mrow><mo>-</mo><mi mathvariant="normal">b</mi><mo>±</mo><msqrt><msup><mrow><mi mathvariant="normal">b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi mathvariant="normal">a</mi><mi mathvariant="normal">c</mi></msqrt></mrow><mrow><mn>2</mn><mi mathvariant="normal">a</mi></mrow></mfrac></math>", "questionType":"單選題", "rightAnswer":"【答案】A", "analysis":"【解析】y-2≥0,y大於等於2.故x≥2", "score":null, "option":"【選項】A、 x≥2 B、 x>1 C、 x≥0 D、 x≤1", "options":{ "answerA":"A、 x≥2", "answerB":"B、 x>1", "answerC":"C、 x≥0", "answerD":"D、 x≤1" } }, { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是( )", "questionType":"單選題", "rightAnswer":"【答案】B", "analysis":"【解析】y-2≥0,y大於等於2.故x≥2", "score":null, "option":"【選項】A、 x≥2 B、 x>1 C、 x≥0 D、 x≤1", "options":{ "answerA":"A、 x≥2", "answerB":"B、 x>1", "answerC":"C、 x≥0", "answerD":"D、 x≤1" } }, { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是( ) <table border=1><tr><td>數學公式</td><td>物理公式</td><td>圖片</td></tr><tr><td><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>f</mi><mfenced separators="|"><mrow><mi>x</mi></mrow></mfenced><mo>=</mo><msub><mrow><mi>a</mi></mrow><mrow><mn>0</mn></mrow></msub><mo>+</mo><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>∞</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><msub><mrow><mi>a</mi></mrow><mrow><mi>n</mi></mrow></msub><mrow><mrow><mi mathvariant="normal">cos</mi></mrow><mo></mo><mrow><mfrac><mrow><mi>n</mi><mi>π</mi><mi>x</mi></mrow><mrow><mi>L</mi></mrow></mfrac></mrow></mrow><mo>+</mo><msub><mrow><mi>b</mi></mrow><mrow><mi>n</mi></mrow></msub><mrow><mrow><mi mathvariant="normal">sin</mi></mrow><mo></mo><mrow><mfrac><mrow><mi>n</mi><mi>π</mi><mi>x</mi></mrow><mrow><mi>L</mi></mrow></mfrac></mrow></mrow></mrow></mfenced></mrow></mrow></math></td><td><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>F</mi><mo>=</mo><mi>G</mi><mfrac><mrow><msub><mrow><mi>m</mi></mrow><mrow><mn>1</mn></mrow></msub><msub><mrow><mi>m</mi></mrow><mrow><mn>2</mn></mrow></msub></mrow><mrow><msup><mrow><mi>r</mi></mrow><mrow><mn>2</mn></mrow></msup></mrow></mfrac><mo>,</mo><mi mathvariant="normal"> </mi><mi mathvariant="normal"> </mi><mi>G</mi><mo>=</mo><mn>6.67</mn><mo>×</mo><msup><mrow><mn>10</mn></mrow><mrow><mo>-</mo><mn>11</mn></mrow></msup></math></td><td><img src="E:/demo/image_0.jpeg" width="118" height="88" /></td></tr></table>
<img src="E:/demo/image_0.jpeg" width="118" height="88" /><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mi>a</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>+</mo><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>=</mo><msup><mrow><mi>c</mi></mrow><mrow><mn>2</mn></mrow></msup></math>", "questionType":"單選題", "rightAnswer":"【答案】B<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>f</mi><mfenced separators="|"><mrow><mi>x</mi></mrow></mfenced><mo>=</mo><msub><mrow><mi>a</mi></mrow><mrow><mn>0</mn></mrow></msub><mo>+</mo><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>∞</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><msub><mrow><mi>a</mi></mrow><mrow><mi>n</mi></mrow></msub><mrow><mrow><mi mathvariant="normal">cos</mi></mrow><mo></mo><mrow><mfrac><mrow><mi>n</mi><mi>π</mi><mi>x</mi></mrow><mrow><mi>L</mi></mrow></mfrac></mrow></mrow><mo>+</mo><msub><mrow><mi>b</mi></mrow><mrow><mi>n</mi></mrow></msub><mrow><mrow><mi mathvariant="normal">sin</mi></mrow><mo></mo><mrow><mfrac><mrow><mi>n</mi><mi>π</mi><mi>x</mi></mrow><mrow><mi>L</mi></mrow></mfrac></mrow></mrow></mrow></mfenced></mrow></mrow></math>", "analysis":"【解析】y-2≥0,y大於等於2.故x≥2", "score":null, "option":"【選項】A、 x≥2 B、 x>1 C、 x≥0 D、 x≤1", "options":{ "answerA":"A、 x≥2", "answerB":"B、 x>1", "answerC":"C、 x≥0", "answerD":"D、 x≤1" } }, { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】在實數-1、0、1、2中,正數有是( )<img src="E:/demo/image_0.jpeg" width="118" height="88" />", "questionType":"多選題", "rightAnswer":"【答案】B、D", "analysis":"【解析】正數的基本定義", "score":null, "option":"【選項】A. -1這是選項換行的部分 B. <?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math>C. 0<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mrow><msub><mo stretchy="false">∭</mo><mrow><mi>V</mi></mrow></msub><mrow><mfenced separators="|"><mrow><mo>∇</mo><mo>⋅</mo><mi mathvariant="bold">F</mi></mrow></mfenced><mo>ⅆ</mo><mi>V</mi></mrow></mrow><mo>=</mo><mrow><msub><mo stretchy="false">∯</mo><mrow><mi>S</mi></mrow></msub><mrow><mi mathvariant="bold">F</mi><mo>⋅</mo><mo>ⅆ</mo><mi mathvariant="bold">S</mi></mrow></mrow></math> D. 2", "options":{ "answerA":"A. -1這是選項換行的部分", "answerB":"B. <?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math>", "answerC":"C. 0<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mrow><msub><mo stretchy="false">∭</mo><mrow><mi>V</mi></mrow></msub><mrow><mfenced separators="|"><mrow><mo>∇</mo><mo>⋅</mo><mi mathvariant="bold">F</mi></mrow></mfenced><mo>ⅆ</mo><mi>V</mi></mrow></mrow><mo>=</mo><mrow><msub><mo stretchy="false">∯</mo><mrow><mi>S</mi></mrow></msub><mrow><mi mathvariant="bold">F</mi><mo>⋅</mo><mo>ⅆ</mo><mi mathvariant="bold">S</mi></mrow></mrow></math>", "answerD":"D. 2" } }, { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】As a volunteer crisis counselor with Crisis Text Line, a free hotline, all via text messages, I am very proud. _________ most of the texters who reach out to us are under the age of 25, this activity _________ me with the chance to interact with the _________ generation.【小題1】 A.If B.Though C.But D.Since【小題2】 A.provides B.equips C.charges D.presents【小題3】 A.older B.younger C.former D.later", "questionType":"填空題", "rightAnswer":"【答案】【小題1】B 【小題2】C 【小題3】A ", "analysis":"【解析】完形填空主要考查考生詞匯量以及對語法的認知程度<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mfenced separators="|"><mrow><mn>1</mn><mo>+</mo><mi>x</mi></mrow></mfenced></mrow><mrow><mi>n</mi></mrow></msup><mo>=</mo><mn>1</mn><mo>+</mo><mfrac><mrow><mi>n</mi><mi>x</mi></mrow><mrow><mn>1</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><mi>n</mi><mfenced separators="|"><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></mfenced><msup><mrow><mi>x</mi></mrow><mrow><mn>2</mn></mrow></msup></mrow><mrow><mn>2</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mo>…</mo></math>", "score":null, "option":null, "options":null }, { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】補寫出下列句子中的空缺部分。(1)李賀《雁門太守行》既渲染了兵臨城下的緊張氣氛,又寫出了守軍威武雄壯的氣勢的兩句是“__________________,________________”。(2)庄子在《逍遙游》中以大鵬直沖青天須憑借風來表達“做事成功需要有豐厚積累”的道理的兩句是“______________,______________”。(3)《琵琶行》中,自居易在描寫琵琶女與五陵少年奏樂飲酒的奢華歡愉后,又以“______________,______________”兩句高度概括了琵琶女美好年華的悄然而逝。", "questionType":"填空題", "rightAnswer":"【答案】(1)黑雲壓城城欲摧 甲光向日金鱗開(2)摶扶搖而上者九萬里 去以六月息者也", "analysis":"(3)今年歡笑復明年 秋月春風等閑度 【解析】此題考查學生對詩文的背誦、理解、默寫能力。考查直接性默寫和理解性默寫兩種類型,此題屬於理解性默寫。要求學生平時既要注意記憶、積累,同時在此基礎上加以理解、應用和賞析。此題中需注意“鱗”“摶”的書寫。", "score":null, "option":null, "options":null }, { "title":"【試卷】學校2020年第二學期期末考試卷", "subject":"【科目】數學", "number":null, "question":"【題文】研究人員在對某湖泊生態系統進行研究,其中水草、草食魚、烏魚、河蟹等構成食物網。請回答下列問題:(1)用標志重捕法調查烏魚的種群密度時,下列情況不會導致調查結果偏高的是 (單選)。A.標志物脫落 B.標志物過於明顯,易被烏魚天敵發現C.被捕捉過一次后更難被捕捉 D.標志到重捕的時間間隔過短(2)湖泊中某些小型魚類生活在水體上層,草食性魚類、烏魚等生活在水體中層,青魚等生活在水體下層,這體現了群落在________結構上具有________現象,其原因是不同動物具有不同的________。(3)草食性魚類的糞便能被細菌和真菌分解,這種情況下,細菌和真菌的能量直接源於第 營養級。該湖泊中肉食性魚類數量較植食性魚類數量少,從能量流動特點分析,其原因是________。(4)該湖泊目前已被生活污水污染,為找出理想的污染治理措施,科研人員做了相關研究。如圖表示某地排污池下游河道中多種指標的測定結果。請回答:<table border=1><tr><td>生物</td><td>毒素含量ug/L</td><td>銨鹽吸收率</td><td>有機物去除率</td></tr><tr><td>硅藻</td><td>0.1</td><td>52%</td><td>0</td></tr><tr><td>藍藻</td><td>0.554</td><td>78%</td><td>0</td></tr><tr><td>紅假單胞光合菌</td><td>0</td><td>87%</td><td>92%</td></tr></table>注:紅假單胞光合菌是一種光合細菌,菌體內有多種光合色素。其有光條件下可進行光能自養生長,無光條件下可分解有機物異養生長。從生態系統的組成成分看,表中紅假單胞光合菌屬於________。從表中數據分析,三種生物中治理該湖泊污染效果最好的生物是________,理由是________。", "questionType":"主觀題", "rightAnswer":"【答案】(1)D (2)垂直;分層 食物和棲息空間(3)一 ;肉食性魚類較植食性魚類營養級高,而能量流動逐級遞減(4)生產者和分解者;紅假單胞光合菌;不產生毒素且對銨鹽和有機物的去除率高", "analysis":"【解析】本題結合圖解,考查種群、群落以及生態系統的結構和功能,意在考查考生的識圖能力和理解所學知識要點,能運用所學知識,准確判斷問題的能力,屬於考綱識記和理解層次的考查。關於能量流動特點的分析:1.消費者的同化量=消費者的攝入量-糞便量,糞便量是上一營養級的同化量;2.每一營養級同化量=呼吸消耗量+分解者利用量+未被利用量+下一營養級同化量,所以能量流動具有逐級遞減的特點。【解答】(1)根據標志重捕法的估算公式:種群數量=(重捕個體數/重捕中標記數)×初次捕獲標數記,如果被捕捉過一次后更難被捕捉、標志物脫落或者標志物過於明顯,易被烏魚天敵發現,都會造成重捕中標記個數減少,從而使估算的種群數量偏大於真實數值。而標志到重捕的時間間隔過短,使重捕中標記個數增大,會造成估算數值小於真實數值。故選 D。(2)由於不同魚的食物和棲息空間不同,造成不同種的魚生活在不同水層,體現了群落在垂直結構上具有分層現象。(3)被細菌和真菌分解的草食性魚類的糞便中的能量屬於草的同化量,即第一營養級的同化量;該湖泊中肉食性魚類數量較植食性魚類數量少,從能量流動特點分析,其原因是肉食性魚類較植食性魚類營養級高,而能量流動逐級遞減,所以湖泊中能維持生存的肉食性魚類數量較植食性魚類數量少。(4)紅假單胞光合菌能進行光合作用屬於生產者,又能分解有機物異養生長屬於分解者;據表格數據分析,治理水華效果最好的生物是紅假單胞光合菌,理由是不產毒素且對銨鹽和有機物的去除率高。故答案為:(1)D (2)垂直;分層 食物和棲息空間(3)一 ;肉食性魚類較植食性魚類營養級高,而能量流動逐級遞減 (4)生產者和分解者;紅假單胞光合菌;不產生毒素且對銨鹽和有機物的去除率高", "score":null, "option":null, "options":null } ]
3:需要使用poi的maven依賴
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
4:保存題目的實體對象
/** * @author : ywb * @createdDate : 2020/9/21 * @updatedDate */ @Data public class Question { /** * 試卷標題 */
private String title; /** * 科目 */
private String subject; /** * 題號 */
private Integer number; /** * 問題 */
private String question; /** * 試題類型 */
private String questionType; /** * 正確答案 */
private String rightAnswer; /** * 解析 */
private String analysis; /** * 分數 */
private String score; /** * ABCDE選項 */
private String option; /** * 選項 */
private Options options; }
/** * @author : ywb * @createdDate : 2020/9/24 * @updatedDate */ @Data public class Options implements Serializable { //A選項
private String answerA; //B選項
private String answerB; //C選項
private String answerC; //D選項
private String answerD; }
5:需要使用的常量枚舉類
/** * @author : ywb * @createdDate : 2020/9/25 * @updatedDate */
public enum QuestionTypeEnum { SINGLE_CHOICE_QUESTION(1,"單選題"), MULTIPLE_CHOICE(2,"多選題"), GAP_FILLING(3,"填空題"), RESPONSE_QUESTION(4,"解答題"), SUBJECTIVE_ITEM(5,"主觀題"), TOPIC(6,"【題文】"), CHOICE(7,"【選項】"), ANSWER(8,"【答案】"), ANALYSIS(9,"【解析】"), FINISH(10,"【結束】"), NOT_CHOICE_QUESTION(11,"非選擇題"), CHOICE_QUESTION(12,"選擇題") ; private Integer code; private String type; QuestionTypeEnum(Integer code, String type) { this.code = code; this.type = type; } public Integer getCode() { return code; } public String getType() { return type; } }
6:保存word文檔中的圖片到本地文件夾的類
/** * 一個保存圖片到硬盤上的類 * @author : ywb * @createdDate : 2020/9/16 * @updatedDate */
public class ImageParse { int number = 0; private String targetDir; private String baseUrl; public ImageParse(String targetDir, String baseUrl) { super(); this.targetDir = targetDir; this.baseUrl = baseUrl; } public String parse(byte[] data, String extName) { return parse(new ByteArrayInputStream(data), extName); } public String parse(InputStream in, String extName) { if (extName.lastIndexOf(".") > -1) { extName = extName.substring(extName.lastIndexOf(".") + 1); } String filename = "image_" + (number++) + "." + extName; File target = new File(targetDir); if (!target.exists()) { target.mkdirs(); } try { IOUtils.copy(in, new FileOutputStream(new File(target, filename))); } catch (IOException e) { e.printStackTrace(); } return baseUrl + filename; } }
7:解析word中存在復雜的表格,表格中包含數學、化學、物理等公式以及圖片
/** * 將word文檔中的表格轉成HTML中表格的樣式 * * @author : ywb * @createdDate : 2020/9/15 * @updatedDate */
public class ReadWordTable { /** * 打印日志 */
private static final Logger log = LoggerFactory.getLogger(ReadWordTable.class); /** * 保存生成HTML時需要被忽略的單元格 */
private List<String> omitCellsList = new ArrayList<String>(); /** * 生成忽略的單元格列表中的格式 * * @param row * @param col * @return
*/
public String generateOmitCellStr(int row, int col) { return row + ":" + col; } /** * 獲取當前單元格的colspan(列合並)的列數 * * @param tcPr 單元格屬性 * @return
*/
public int getColspan(CTTcPr tcPr) { // 判斷是否存在列合並
CTDecimalNumber gridSpan = null; // 合並的起始列
if ((gridSpan = tcPr.getGridSpan()) != null) { // 獲取合並的列數
BigInteger num = gridSpan.getVal(); return num.intValue(); } else { // 其他被合並的列或正常列
return 1; } } /** * 獲取當前單元格的rowspan(行合並)的行數 * * @param table 表格 * @param row 行值 * @param col 列值 * @return
*/
public int getRowspan(XWPFTable table, int row, int col) { XWPFTableCell cell = table.getRow(row).getCell(col); // 正常獨立單元格
if (!isContinueRow(cell) && !isRestartRow(cell)) { return 1; } // 當前單元格的寬度
int cellWidth = getCellWidth(table, row, col); // 當前單元格距離左側邊框的距離
int leftWidth = getLeftWidth(table, row, col); // 用戶保存當前單元格行合並的單元格數-1(因為不包含自身)
List<Boolean> list = new ArrayList<Boolean>(); getRowspan(table, row, cellWidth, leftWidth, list); return list.size() + 1; } /** * * @param table * @param row * @param cellWidth * @param leftWidth * @param list */
private void getRowspan(XWPFTable table, int row, int cellWidth, int leftWidth, List<Boolean> list) { // 已達到最后一行
if (row + 1 >= table.getNumberOfRows()) { return; } row = row + 1; int colsNum = table.getRow(row).getTableCells().size(); // 因為列合並單元格可能導致行合並的單元格並不在同一列,所以從頭遍歷列,通過屬性、寬度以及距離左邊框間距來判斷是否是行合並
for (int i = 0; i < colsNum; i++) { XWPFTableCell testTable = table.getRow(row).getCell(i); // 是否為合並單元格的中間行(包括結尾行)
if (isContinueRow(testTable)) { // 是被上一行單元格合並的單元格
if (getCellWidth(table, row, i) == cellWidth && getLeftWidth(table, row, i) == leftWidth) { list.add(true); // 被合並的單元格在生成html時需要忽略
addOmitCell(row, i); // 去下一行繼續查找
getRowspan(table, row, cellWidth, leftWidth, list); break; } } } } /** * 判斷是否是合並行的起始行單元格 * * @param tableCell * @return
*/
public boolean isRestartRow(XWPFTableCell tableCell) { CTTcPr tcPr = tableCell.getCTTc().getTcPr(); if (tcPr.getVMerge() == null) { return false; } if (tcPr.getVMerge().getVal() == null) { return false; } if (tcPr.getVMerge().getVal().toString().equalsIgnoreCase("restart")) { return true; } return false; } /** * 判斷是否是合並行的中間行單元格(包括結尾的最后一行的單元格) * * @param tableCell * @return
*/
public boolean isContinueRow(XWPFTableCell tableCell) { CTTcPr tcPr = tableCell.getCTTc().getTcPr(); if (tcPr.getVMerge() == null) { return false; } if (tcPr.getVMerge().getVal() == null) { return true; } return false; } /** * 獲取當前單元格距離左邊框的距離 * @param table * @param row * @param col * @return
*/
public int getLeftWidth(XWPFTable table, int row, int col) { int leftWidth = 0; for (int i = 0; i < col; i++) { leftWidth += getCellWidth(table, row, i); } return leftWidth; } /** * 獲取當前單元格的寬度 * @param table * @param row * @param col * @return
*/
public int getCellWidth(XWPFTable table, int row, int col) { BigInteger width = table.getRow(row).getCell(col).getCTTc().getTcPr().getTcW().getW(); return width.intValue(); } /** * 添加忽略的單元格(被行合並的單元格,生成HTML時需要忽略) * * @param row * @param col */
public void addOmitCell(int row, int col) { String omitCellStr = generateOmitCellStr(row, col); omitCellsList.add(omitCellStr); } public boolean isOmitCell(int row, int col) { String cellStr = generateOmitCellStr(row, col); return omitCellsList.contains(cellStr); } /** * 讀取表格中的內容包含圖片以及各個科目的公式 * * @param table 表格的XWPFTable對象 * @param imageParse 圖片保存到本地 * @return
*/
public String readTable(XWPFTable table, ImageParse imageParse) { log.info("<< 解析段落中的表格"); // 表格行數
int tableRowsSize = table.getRows().size(); StringBuilder tableToHtmlStr = new StringBuilder("<table border=1>"); for (int i = 0; i < tableRowsSize; i++) { tableToHtmlStr.append("<tr>"); int tableCellsSize = table.getRow(i).getTableCells().size(); for (int j = 0; j < tableCellsSize; j++) { if (isOmitCell(i, j)) { continue; } XWPFTableCell tableCell = table.getRow(i).getCell(j); // 獲取單元格的屬性
CTTcPr tcPr = tableCell.getCTTc().getTcPr(); int colspan = getColspan(tcPr); if (colspan > 1) { // 合並的列
tableToHtmlStr.append("<td colspan='" + colspan + "'"); } else { // 正常列
tableToHtmlStr.append("<td"); } int rowspan = getRowspan(table, i, j); // 合並的行
if (rowspan > 1) { tableToHtmlStr.append(" rowspan='" + rowspan + "'>"); } else { tableToHtmlStr.append(">"); } List<XWPFParagraph> paragraphs = tableCell.getParagraphs(); StringBuilder stringBuilder = null; for (XWPFParagraph paragraph : paragraphs) { //獲取單元格中的數據
stringBuilder = new StringBuilder(); //解析表格單元格中存在的特殊公式以及表格的單元格中存在的圖片
ParagraphHandle.handleParagraph(stringBuilder, paragraph, imageParse); } tableToHtmlStr.append(stringBuilder.toString() + "</td>"); } tableToHtmlStr.append("</tr>"); } tableToHtmlStr.append("</table>"); clearTableInfo(); return tableToHtmlStr.toString(); } /** * 清除cellList */
public void clearTableInfo() { omitCellsList.clear(); }
例如:
<table border=1><tr><td>1one</td><td colspan='2'>數學公式</td><td>Three</td><td>Four</td><td>Six</td><td>Seven</td><td>eight</td></tr><tr><td rowspan='26'>這是一個公告 </td><td rowspan='16'><img src="E:/demo/image_0.png" width="34" height="117" /></td><td rowspan='6'><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math></td><td>1</td><td rowspan='26'><img src="E:/demo/image_1.png" width="34" height="117" /></td><td rowspan='26'></td><td rowspan='26'></td><td rowspan='4'></td></tr><tr><td></td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td><td rowspan='2'></td></tr><tr><td>5</td></tr><tr><td rowspan='10'><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mfenced separators="|"><mrow><mi>x</mi><mo>+</mo><mi>a</mi></mrow></mfenced></mrow><mrow><mi>n</mi></mrow></msup><mo>=</mo><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><mfrac linethickness="0pt"><mrow><mi>n</mi></mrow><mrow><mi>k</mi></mrow></mfrac></mrow></mfenced><msup><mrow><mi>x</mi></mrow><mrow><mi>k</mi></mrow></msup><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msup></mrow></mrow></math></td><td>6</td><td></td></tr><tr><td>7</td><td rowspan='4'></td></tr><tr><td>8</td></tr><tr><td>9</td></tr><tr><td>0</td></tr><tr><td>11</td><td rowspan='2'></td></tr><tr><td>12</td></tr><tr><td>1</td><td rowspan='3'></td></tr><tr><td>1</td></tr><tr><td>1</td></tr><tr><td rowspan='9'></td><td rowspan='9'><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mi>e</mi></mrow><mrow><mi>x</mi></mrow></msup><mo>=</mo><mn>1</mn><mo>+</mo><mfrac><mrow><mi>x</mi></mrow><mrow><mn>1</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><msup><mrow><mi>x</mi></mrow><mrow><mn>2</mn></mrow></msup></mrow><mrow><mn>2</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><msup><mrow><mi>x</mi></mrow><mrow><mn>3</mn></mrow></msup></mrow><mrow><mn>3</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mo>…</mo><mo>,</mo><mi mathvariant="normal"> </mi><mi mathvariant="normal"> </mi><mo>-</mo><mi>∞</mi><mo><</mo><mi>x</mi><mo><</mo><mi>∞</mi></math></td><td>11</td><td></td></tr><tr><td>1</td><td rowspan='9'></td></tr><tr><td>12</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr><tr><td>8</td></tr><tr><td colspan='2'></td><td>9</td></tr><tr><td>好的</td><td colspan='2'>好的</td><td>好的</td><td>好的</td><td></td><td></td><td></td></tr></table>
8:poi讀取word時,XWPFParagraph 有兩個方法可以分別提出XWPFRun和CTOMath,但是不知道其所在的位置,此類解決了這個問題
/** * 可以把公式和XWPFRun按順序遍歷,用到了以CTP開頭的底層方式 * <p> * XWPFParagraph中主有兩個方法可以分別提出XWPFRun和CTOMath,但是不知道位置 * ParagraphChildOrderManager這個類是專門解決這個問題的 * * @author : ywb * @createdDate : 2020/9/16 * @updatedDate */
public class ParagraphChildOrderManager { public static int TYPE_RUN = 1; public static int TYPE_OMATH = 2; List<Integer> typeList = new ArrayList<Integer>(); XWPFParagraph p; public ParagraphChildOrderManager(XWPFParagraph paragraph) { this.p = paragraph; //using a cursor to go through the paragraph from top to down
XmlCursor xmlcursor = paragraph.getCTP().newCursor(); while (xmlcursor.hasNextToken()) { XmlCursor.TokenType tokenType = xmlcursor.toNextToken(); if (tokenType.isStart()) { if (xmlcursor.getName().getPrefix().equalsIgnoreCase("w") && xmlcursor.getName().getLocalPart().equalsIgnoreCase("r")) { typeList.add(TYPE_RUN); } else if (xmlcursor.getName().getLocalPart().equalsIgnoreCase("oMath")) { typeList.add(TYPE_OMATH); } } else if (tokenType.isEnd()) { xmlcursor.push(); xmlcursor.toParent(); if (xmlcursor.getName().getLocalPart().equalsIgnoreCase("p")) { break; } xmlcursor.pop(); } } } public List<Object> getChildList() { List<Object> runsOrMathList = new ArrayList<Object>(); List<XWPFRun> runs = p.getRuns(); List<CTOMath> oMathList = p.getCTP().getOMathList(); // Queue<Object> mathQueue = null;
if (oMathList != null && oMathList.size() > 0) { Queue<XWPFRun> runsQueue = new LinkedList<XWPFRun>(runs); Queue<CTOMath> mathQueue = new LinkedList<CTOMath>(oMathList); for (int i = 0; i < typeList.size(); i++) { Integer type = typeList.get(i); if (type.equals(TYPE_RUN) && runs.size() > 0) { runsOrMathList.add(runsQueue.poll()); } else if (type.equals(TYPE_OMATH) && mathQueue.size() > 0) { runsOrMathList.add(mathQueue.poll()); } } return runsOrMathList; } else { List<CTOMathPara> oMathParaList = p.getCTP().getOMathParaList(); Queue<XWPFRun> runsQueue = new LinkedList<XWPFRun>(runs); Queue<CTOMathPara> mathQueue = new LinkedList<CTOMathPara>(oMathParaList); for (int i = 0; i < typeList.size(); i++) { Integer type = typeList.get(i); if (type.equals(TYPE_RUN) && runs.size() > 0) { runsOrMathList.add(runsQueue.poll()); } else if (type.equals(TYPE_OMATH) && mathQueue.size() > 0) { runsOrMathList.add(mathQueue.poll()); } } return runsOrMathList; } } }
9:將word文檔中公式格式為omML轉換為mathML
/** * 將word文檔中公式格式為omML轉換為mathMl * @param omML * @return
*/
public static String getMathMLFromNode(String omML) { //通過word中的xsl轉成器解析omml公式格式
StreamSource xslSource = new StreamSource(new File("src/main/resources/OMML2MML.XSL")); StringWriter writer = new StringWriter(); try { Transformer t = TransformerFactory.newInstance().newTransformer(xslSource); Source sources = new StreamSource(new StringReader(omML)); StreamResult result = new StreamResult(writer); t.transform(sources, result); } catch (TransformerException e) { e.printStackTrace(); } String mathML = writer.getBuffer().toString(); mathML = mathML.replaceAll("xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"", ""); mathML = mathML.replaceAll("xmlns:mml", "xmlns"); mathML = mathML.replaceAll("mml:", ""); return mathML; }
10:解析word處理類
/** * @author : ywb * @createdDate : 2020/9/18 * @updatedDate */
public class ParagraphHandle { private static final Logger log = LoggerFactory.getLogger(ParagraphHandle.class); // 該正則用來匹配一個大題(例如:二、多選題)
private static String regex = "([一|二|三|四|五|六|七|八|九|十]{1,3})([、.]{1})([\\u4E00-\\u9FA5\\s]+題)"; public static void main(String[] args) throws IOException { wordParser(); }/** * 根據poi將word文檔逐級解析成實體對象 * * @throws IOException */
public static List<Question> wordParser() throws IOException { ArrayList<Question> list = new ArrayList<Question>(); //第二種方式使用poi行讀的方式逐步解析word文檔拼接成實體對象
XWPFDocument doc = new XWPFDocument(POIXMLDocument.openPackage("C:\\Users\\ywb\\Desktop\\試題分類.docx")); // List<XWPFParagraph> paragraphs = doc.getParagraphs();
List<IBodyElement> paragraphs = doc.getBodyElements(); System.out.println(paragraphs.size()); //第一段固定為試卷名稱 // String title = ((XWPFParagraph) paragraphs.get(0)).getParagraphText(); //第二段固定為什么類型的試卷 // String subject = ((XWPFParagraph) paragraphs.get(1)).getParagraphText();
for (int i = 2; i < paragraphs.size(); i++) { String paragraphText = ((XWPFParagraph) paragraphs.get(i)).getParagraphText(); if (paragraphText.contains(QuestionTypeEnum.SINGLE_CHOICE_QUESTION.getType())) { int num = getChoiceQuestionList(i, QuestionTypeEnum.SINGLE_CHOICE_QUESTION.getType(), paragraphs, list); i = num; } else if (paragraphText.contains(QuestionTypeEnum.MULTIPLE_CHOICE.getType())) { int num = getChoiceQuestionList(i, QuestionTypeEnum.MULTIPLE_CHOICE.getType(), paragraphs, list); i = num; } else if (paragraphText.contains(QuestionTypeEnum.GAP_FILLING.getType())) { int num = getNotChoiceQuestionList(i, QuestionTypeEnum.GAP_FILLING.getType(), paragraphs, list); i = num; } else if (paragraphText.contains(QuestionTypeEnum.SUBJECTIVE_ITEM.getType())) { int num = getNotChoiceQuestionList(i, QuestionTypeEnum.SUBJECTIVE_ITEM.getType(), paragraphs, list); i = num; } } System.out.println(list); return list; } /** * 選擇題的解析方法 * * @param i * @param paragraphs * @return * @throws IOException */
public static int getChoiceQuestionList(int i, String questionType, List<IBodyElement> paragraphs, List<Question> list) throws IOException { //該正則用來匹配一個大題(例如:二、多選題)
Pattern compile = Pattern.compile(regex); i++; for (i = i; i < paragraphs.size(); i++) { String question = getContent(paragraphs.get(i), new StringBuilder()); // 表示一種題型的結束
if (compile.matcher(question).find()) { i--; break; } //獲取word試卷題目中的題干信息
if (question.contains(QuestionTypeEnum.TOPIC.getType())) { i++; for (i = i; i < paragraphs.size(); i++) { String content = getContent(paragraphs.get(i), new StringBuilder()); if (content.contains(QuestionTypeEnum.CHOICE.getType())) { break; } question += content; } } //獲取題目中的選項信息
String option = getContent(paragraphs.get(i), new StringBuilder()); if (option.contains(QuestionTypeEnum.CHOICE.getType())) { i++; //如果標簽不是以【答案】結尾,該題目為多行一題
while (!((XWPFParagraph) paragraphs.get(i)).getParagraphText().contains(QuestionTypeEnum.ANSWER.getType())) { String content = getContent(paragraphs.get(i), new StringBuilder()); option += content; i++; } } //獲取題目的答案信息
String answer = getContent(paragraphs.get(i), new StringBuilder()); if (answer.contains(QuestionTypeEnum.ANSWER.getType())) { i++; while (!((XWPFParagraph) paragraphs.get(i)).getParagraphText().contains(QuestionTypeEnum.ANALYSIS.getType())) { String content = getContent(paragraphs.get(i), new StringBuilder()); answer += content; i++; } } //獲取題目的解析信息
String analysis = getContent(paragraphs.get(i), new StringBuilder()); if (analysis.contains(QuestionTypeEnum.ANALYSIS.getType())) { i++; while (!((XWPFParagraph) paragraphs.get(i)).getParagraphText().contains(QuestionTypeEnum.FINISH.getType())) { String content = getContent(paragraphs.get(i), new StringBuilder()); analysis += content; i++; } } if (StringUtils.isNotBlank(question) && StringUtils.isNotBlank(analysis) && StringUtils.isNotBlank(answer) && StringUtils.isNotBlank(option)) { Question q = new Question(); //第一段固定為試卷名稱
String title = ((XWPFParagraph) paragraphs.get(0)).getParagraphText(); //第二段固定為什么類型的試卷
String subject = ((XWPFParagraph) paragraphs.get(1)).getParagraphText(); q.setTitle(title); q.setSubject(subject); q.setQuestionType(questionType); q.setQuestion(question); q.setAnalysis(analysis); q.setRightAnswer(answer); q.setOption(option); Options options = divideOption(option); q.setOptions(options); list.add(q); } } System.out.println(i); return i; } /** * 將選項分隔出來 * * @param option * @return
*/
public static Options divideOption(String option) { //使用subString將答案分割
String regex = "[A|B|C|D]、"; Options options = new Options(); String optionA = option.substring(option.indexOf("A"), option.indexOf("B")); String optionB = option.substring(option.indexOf("B"), option.indexOf("C")); String optionC = option.substring(option.indexOf("C"), option.indexOf("D")); String optionD = option.substring(option.indexOf("D")); options.setAnswerA(optionA); options.setAnswerB(optionB); options.setAnswerC(optionC); options.setAnswerD(optionD); return options; }/** * 段落處理器 * @param content 拼接word內容 * @param body word段落 * @param imageParser 保存圖片文件到磁盤 */
public static void handleParagraph(StringBuilder content, IBodyElement body, ImageParse imageParser) { log.info(">> 開始解析段落"); XWPFParagraph p = (XWPFParagraph) body; if (p.isEmpty() || p.isWordWrap() || p.isPageBreak()) { return; } // String tagName = "p"; // content.append("<" + tagName + ">");
/*XWPFParagraph 有兩個方法可以分別提出XWPFRun和CTOMath,但是不知道位置 ParagraphChildOrderManager這個類是專門解決這個問題的 */ ParagraphChildOrderManager runOrMaths = new ParagraphChildOrderManager(p); List<Object> childList = runOrMaths.getChildList(); for (Object child : childList) { if (child instanceof XWPFRun) { //處理段落中的文本以及圖片
handleParagraphRun(content, (XWPFRun) child, imageParser); } else if (child instanceof CTOMath) { // 處理word中存在的公式成mathML格式
handleParagraphOMath(content, (CTOMath) child); } else if (child instanceof CTOMathPara) { //處理word中存在的公式
handleParagraphOMath(content, (CTOMathPara) child); } } // content.append("</" + tagName + ">");
} /** * 段落文本處理器 * * @param content * @param run * @param imageParser */
private static void handleParagraphRun(StringBuilder content, XWPFRun run, ImageParse imageParser) { // 有內嵌的圖片
List<XWPFPicture> pics = run.getEmbeddedPictures(); if (pics != null && pics.size() > 0) { handleParagraphRunsImage(content, pics, imageParser); } else { //純文本直接獲取
content.append(run.toString()); } } /** * 處理圖片 * * @param content * @param pics * @param imageParser */
private static void handleParagraphRunsImage(StringBuilder content, List<XWPFPicture> pics, ImageParse imageParser) { log.info(">> 開始解析段落中存在的圖片"); for (XWPFPicture pic : pics) { log.info(pic.getDescription()); String path = imageParser.parse(pic.getPictureData().getData(), pic.getPictureData().getFileName()); log.debug("pic.getPictureData().getFileName()===" + pic.getPictureData().getFileName()); CTPicture ctPicture = pic.getCTPicture(); Node domNode = ctPicture.getDomNode(); Node extNode = W3cNodeUtil.getChildChainNode(domNode, "pic:spPr", "a:ext"); NamedNodeMap attributes = extNode.getAttributes(); if (attributes != null && attributes.getNamedItem("cx") != null) { int width = WordMyUnits.emuToPx(new Double(attributes.getNamedItem("cx").getNodeValue())); int height = WordMyUnits.emuToPx(new Double(attributes.getNamedItem("cy").getNodeValue())); content.append(String.format("<img src=\"%s\" width=\"%d\" height=\"%d\" />", path, width, height)); } else { content.append(String.format("<img src=\"%s\" />", path)); } } } /** * 處理公式 * * @param content * @param child */
private static void handleParagraphOMath(StringBuilder content, CTOMath child) { log.info(">> 開始解析段落中的CTOMath公式"); //將word中的omml格式轉換成mathML
String mathMLFromNode = OmmlUtils.getMathMLFromNode(child.xmlText()); content.append(mathMLFromNode); } /** * 處理公式(將word中的omML格式的公式轉換成mathML格式的工單) * * @param content * @param child */
private static void handleParagraphOMath(StringBuilder content, CTOMathPara child) { log.info(">> 開始解析段落中的CTOMathPara公式"); //將word中的omml格式轉換成mathML
String mathMLFromNode = OmmlUtils.getMathMLFromNode(child.xmlText()); content.append(mathMLFromNode); } }
11:前端再調用MathJax.js來進行頁面渲染(Html文件引用<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>)
vue.js+element ui項目中、package-lock.json中引用mathjax.js
"mathjax": { "version": "2.7.9", "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-2.7.9.tgz", "integrity": "sha512-NOGEDTIM9+MrsqnjPEjVGNx4q0GQxqm61yQwSK+/5S59i26wId5IC5gNu9/bu8+CCVl5p9G2IHcAl/wJa+5+BQ==" },
Html文件引用<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">渲染頁面
<html>
<head>
<style> p{margin-top:0pt;margin-bottom:1pt;} span.a{font-family:'Cambria Math';} p.a3{text-align:center;} span.a3{font-size:9.0pt;} span.Char{font-family:'Cambria Math';font-size:9.0pt;} span.a4{font-size:9.0pt;} span.Char0{font-family:'Cambria Math';font-size:9.0pt;} span.a5{font-size:9.0pt;} span.Char1{font-family:'Cambria Math';font-size:9.0pt;} span.a6{font-family:'Cambria Math';font-size:11.0pt;} span.Char2{font-family:'Cambria Math';font-size:11.0pt;} p.a7{text-indent:21.0pt;} span.a8{font-family:'Cambria Math';font-style:italic;color:#808080;} span.a9{font-family:'Cambria Math';}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head>
<body>
<p><span style='color:#000000;'>【試卷】</span><span style='color:#000000;'>三</span><span style='color:#000000;'>學校</span><span style='color:#000000;'>2020</span><span style='color:#000000;'>年</span><span style='color:#000000;'>第</span><span style='color:#000000;'>二</span><span style='color:#000000;'>學期</span><span style='color:#000000;'>期末考試卷</span></p><p><span style='color:#000000;'>【科目】數學</span></p><p><span style='color:#000000;'>一</span><span style='color:#000000;'>、單選題</span></p><p><span style='color:#000000;'>【題文】</span><span style='color:#000000;'>若</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math><span style='color:#000000;'>,</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math><span style='color:#000000;'>,</span><span style='color:#000000;'>則</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math><span style='color:#000000;'>的</span><span style='color:#000000;'>取值范為是</span><span style='color:#000000;'>(</span><span style='color:#000000;'> </span><span style='color:#000000;'>)</span></p><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mfrac><mrow><mo>-</mo><mi mathvariant="normal">b</mi><mo>±</mo><msqrt><msup><mrow><mi mathvariant="normal">b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi mathvariant="normal">a</mi><mi mathvariant="normal">c</mi></msqrt></mrow><mrow><mn>2</mn><mi mathvariant="normal">a</mi></mrow></mfrac></math></p><p><span style='color:#000000;'>【選項】</span><span style='color:#000000;'>A</span><span style='color:#000000;'>、</span><span style='color:#000000;'> </span><span style='color:#000000;'>x≥2</span><span style='color:#000000;'> </span><span style='color:#000000;'> </span><span style='color:#000000;'>B</span><span style='color:#000000;'>、</span><span style='color:#000000;'> </span><span style='color:#000000;'>x</span><span style='color:#000000;'>></span><span style='color:#000000;'>1</span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>C</span><span style='color:#000000;'>、</span><span style='color:#000000;'> </span><span style='color:#000000;'>x≥0</span><span style='color:#000000;'> </span><span style='color:#000000;'> </span><span style='color:#000000;'>D</span><span style='color:#000000;'>、</span><span style='color:#000000;'> </span><span style='color:#000000;'>x≤1</span></p><p><span style='color:#000000;'>【答案】</span><span style='color:#000000;'>A</span></p><p><span style='color:#000000;'>【解析】</span><span style='color:#000000;'>y-2≥0</span><span style='color:#000000;'>,</span><span style='color:#000000;'>y</span><span style='color:#000000;'>大於等於</span><span style='color:#000000;'>2.</span><span style='color:#000000;'>故</span><span style='color:#000000;'>x≥2</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>二</span><span style='color:#000000;'>、多選題</span></p><p><span style='color:#000000;'>【題文】</span><span style='color:#000000;'>在實數-</span><span style='color:#000000;'>1</span><span style='color:#000000;'>、</span><span style='color:#000000;'>0</span><span style='color:#000000;'>、</span><span style='color:#000000;'>1</span><span style='color:#000000;'>、</span><span style='color:#000000;'>2</span><span style='color:#000000;'>中,</span>正數<span style='color:#000000;'>有是</span><span style='color:#000000;'>(</span><span style='color:#000000;'> </span><span style='color:#000000;'>)</span></p><p><img src="E:/demo/image_0.jpeg" width="118" height="88" /></p><p><span style='color:#000000;'>【選項】</span><span style='color:#000000;'>A</span><span style='color:#000000;'>.</span><span style='color:#000000;'> </span><span style='color:#000000;'>-1</span></p><p><span style='color:#000000;'>這是</span><span style='color:#000000;'>選項換行的部分</span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>B</span><span style='color:#000000;'>. </span><span style='color:#000000;'>1</span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>C</span><span style='color:#000000;'>. </span><span style='color:#000000;'>0</span><span style='color:#000000;'> </span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>D</span><span style='color:#000000;'>. </span><span style='color:#000000;'>2</span></p><p><span style='color:#000000;'>【答案】</span><span style='color:#4472c4;'>B</span><span style='color:#4472c4;'>、</span><span style='color:#4472c4;'>D</span></p><p><span style='color:#000000;'>【解析】正數的基本定義</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>三</span><span style='color:#000000;'>、判斷題</span></p><p><span style='color:#000000;'>【題文】把</span><span style='color:#000000;'>2a-2c</span><span style='color:#000000;'>分解因式為</span><span style='color:#000000;'>2(a-c)</span><span style='color:#000000;'>。</span><span style='color:#000000;'>(</span><span style='color:#000000;'> </span><span style='color:#000000;'>)</span></p><table border=1><tr><td><p><span style='color:#000000;'>A</span></p></td><td><p><span style='color:#000000;'>1</span></p></td><td><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msqrt><mn>2</mn></msqrt></math></p></td><td><p><img src="E:/demo/image_1.jpeg" width="42" height="32" /></p></td></tr></table><p><span style='color:#000000;'>【答案】</span><span style='color:#000000;'>對</span></p><p><span style='color:#000000;'>【解析】提取公因式法分解因式</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>四</span><span style='color:#000000;'>、</span><span style='color:#000000;'>填空題</span></p><p><span style='color:#000000;'>【題文】</span><span style='color:#000000;'>大漠孤煙直</span><span style='color:#000000;'>,</span><span style='color:#000000;'><span style='text-decoration: underline;'>[</span></span><span style='color:#000000;'> </span><span style='color:#000000;'><span style='text-decoration: underline;'>]</span></span><span style='color:#000000;'>。</span><span style='color:#000000;'> --</span><span style='color:#000000;'>王維《使至塞上》</span></p><p><span style='color:#000000;'>【答案】</span><span style='color:#000000;'>長河</span><span style='color:#000000;'>落日圓</span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>【解析】</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>五</span><span style='color:#000000;'>、主觀題</span></p><p><span style='color:#000000;'>【題文】</span><span style='color:#000000;'>聞一多</span><span style='color:#000000;'>先生的說和做觀后感</span></p><p><span style='color:#000000;'>聞一多先生的說和做觀后感</span></p><p><span style='color:#000000;'>【答案】</span></p><p><span style='color:#000000;'>【解析】</span><span style='color:#000000;'>這篇文章記敘了聞一多先生的主要事跡,表現了他的崇高品格,高度贊揚了他的革命精神</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>【</span><span style='color:#000000;'>題</span><span style='color:#000000;'>文</span><span style='color:#000000;'>】如圖所示,電源電壓保持不變,斷開開關</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi mathvariant="normal">S</mi></mrow><mrow><mn>3</mn></mrow></msub></math><span style='color:#000000;'>,分別只閉合</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi mathvariant="normal">S</mi></mrow><mrow><mn>1</mn></mrow></msub></math><span style='color:#000000;'>和只閉合</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>S</mi></mrow><mrow><mn>2</mn></mrow></msub></math><span style='color:#000000;'>,電阻</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>R</mi></mrow><mrow><mn>1</mn></mrow></msub></math><span style='color:#000000;'>和</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>R</mi></mrow><mrow><mn>2</mn></mrow></msub></math><span style='color:#000000;'>兩端的電壓之比為</span><span style='color:#000000;'>4</span><span style='color:#000000;'>:</span><span style='color:#000000;'>3</span><span style='color:#000000;'>,電阻</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>R</mi></mrow><mrow><mn>3</mn></mrow></msub></math><span style='color:#000000;'>兩端的電壓之比為</span><span style='color:#000000;'>2</span><span style='color:#000000;'>:</span><span style='color:#000000;'>3</span><span style='color:#000000;'>。只閉合</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>S</mi></mrow><mrow><mn>2</mn></mrow></msub></math><span style='color:#000000;'>時</span><span style='color:#000000;'>它</span><span style='color:#000000;'>的</span><span style='color:#000000;'>電阻</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>R</mi></mrow><mrow><mn>3</mn></mrow></msub></math><span style='color:#000000;'>消耗的電功率為</span><span style='color:#000000;'>100W</span><span style='color:#000000;'>。求:</span><span style='color:#000000;'>(</span><span style='color:#000000;'>大題</span><span style='color:#000000;'>如果有圖片,請將其放置在大題題文后一行,圖片</span><span style='color:#000000;'>布局</span><span style='color:#000000;'>選擇</span><span style='color:#000000;'>嵌入型</span><span style='color:#000000;'>)</span><b> </b></p><p><span style='color:#000000;'>【作圖】</span><img src="E:/demo/image_2.png" width="180" height="136" /></p><p><span style='color:#000000;'>1.</span><span style='color:#000000;'>只閉合</span><span style='color:#000000;'>S1</span><span style='color:#000000;'>時,電阻</span><span style='color:#000000;'>R1</span><span style='color:#000000;'>和</span><span style='color:#000000;'>R3</span><span style='color:#000000;'>消耗的電功率之比。</span></p><p>2.開關S<sub>1</sub>、S<sub>2</sub>、S<sub>3</sub>都閉合時,電路消耗的總功率。</p><p><span style='color:#000000;'>【</span><span style='color:#000000;'>答案</span><span style='color:#000000;'>】</span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>【解析】</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>六</span><span style='color:#000000;'>、英語題</span></p><p><span style='color:#000000;'>【題文】</span><span style='color:#000000;'>What's your name</span><span style='color:#000000;'>?</span></p><p><span style='color:#000000;'>【</span><span style='color:#000000;'>答案</span><span style='color:#000000;'>】請問你叫什么名字?</span><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>【解析】</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>七</span><span style='color:#000000;'>、</span><span style='color:#000000;'>完形填空題</span></p><p>【題文】As a volunteer crisis counselor with Crisis Text Line, a free hotline, all via text messages, I am very proud. _________ most of the texters who reach out to us are under the age of 25, this activity _________ me with the chance to interact with the _________ generation.</p><p><span style='color:#4472c4;'>【小題</span><span style='color:#4472c4;'>1】</span> A.If B.Though C.But D.Since</p><p><span style='color:#4472c4;'>【小題2】</span> A.provides B.equips C.charges D.presents</p><p><span style='color:#4472c4;'>【小題3】</span> A.older B.younger C.former D.later</p><p><span style='color:#000000;'>【答案】</span></p><p><span style='color:#4472c4;'>【小題</span><span style='color:#4472c4;'>1</span><span style='color:#4472c4;'>】</span><span style='color:#4472c4;'>B</span><span style='color:#4472c4;'> </span><span style='color:#4472c4;'>【小題</span><span style='color:#4472c4;'>2</span><span style='color:#4472c4;'>】</span><span style='color:#4472c4;'>C</span><span style='color:#4472c4;'> </span><span style='color:#4472c4;'>【小題</span><span style='color:#4472c4;'>3</span><span style='color:#4472c4;'>】</span><span style='color:#4472c4;'>A</span><span style='color:#4472c4;'> </span></p><p><span style='color:#000000;'>【解析】</span></p><p><span style='color:#000000;'>【結束】</span></p><p><span style='color:#000000;'>八、</span><span style='color:#000000;'>物理題</span></p><p><span style='color:#000000;'>【題文】如圖所示,物塊</span><span style='color:#000000;'>A</span><span style='color:#000000;'>和</span><span style='color:#000000;'>B</span><span style='color:#000000;'>通過一根輕質不可伸長的細繩連接,跨放在質量不計的光滑定滑輪兩側,質量分別為</span><span style='color:#000000;'>mA=2kg</span><span style='color:#000000;'>、</span><span style='color:#000000;'>mB</span><span style='color:#000000;'>=1kg</span><span style='color:#000000;'>。初始時</span><span style='color:#000000;'>A</span><span style='color:#000000;'>靜止與水平地面上,</span><span style='color:#000000;'>B</span><span style='color:#000000;'>懸於空中。先將</span><span style='color:#000000;'>B</span><span style='color:#000000;'>豎直向上再舉高</span><span style='color:#000000;'>h=1.8m(</span><span style='color:#000000;'>未觸及滑輪</span><span style='color:#000000;'>)</span><span style='color:#000000;'>,然后由靜止釋放。一段時間后細繩綳直,</span><span style='color:#000000;'>A</span><span style='color:#000000;'>、</span><span style='color:#000000;'>B</span><span style='color:#000000;'>以大小相等的速度一起運動,之后</span><span style='color:#000000;'>B</span><span style='color:#000000;'>恰好可以和地面接觸</span><span style='color:#000000;'>(</span><span style='color:#000000;'>取</span><span style='color:#000000;'>g=10m/s2)</span><span style='color:#000000;'>。</span></p><p><img src="E:/demo/image_3.png" width="84" height="141" /></p><p><span style='color:#000000;'>(1)B</span><span style='color:#000000;'>從釋放到細繩綳直時的運動時間</span><span style='color:#000000;'>t</span><span style='color:#000000;'>;</span></p><p><span style='color:#000000;'>(2)A</span><span style='color:#000000;'>的最大速度</span><span style='color:#000000;'>v</span><span style='color:#000000;'>的大小;</span></p><p><span style='color:#000000;'>(3)</span><span style='color:#000000;'>初始時</span><span style='color:#000000;'>B</span><span style='color:#000000;'>離地面的高度</span><span style='color:#000000;'>H</span><span style='color:#000000;'>。</span></p><p><span style='color:#000000;'>【答案】</span><span style='color:#000000;'>(1)B</span><span style='color:#000000;'>從釋放到細繩剛綳直前做自由落體運動,有:</span><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mover accent="true"><mrow><mi>F</mi></mrow><mo>→</mo></mover><mo>=</mo><mi>m</mi><mover accent="true"><mrow><mi>a</mi></mrow><mo>→</mo></mover></math></p><p><span style='color:#000000;'>代入數據解得:</span><span style='color:#000000;'>t=0.6 s</span><span style='color:#000000;'>。</span></p><p><span style='color:#000000;'>(</span><span style='color:#000000;'>2</span><span style='color:#000000;'>)</span><span style='color:#000000;'>根據動量定理得:</span></p><p><span style='color:#000000;'>對</span><span style='color:#000000;'>A(</span><span style='color:#000000;'>取向上為正方向</span><span style='color:#000000;'>)</span><span style='color:#000000;'>,則有:</span><span style='color:#000000;'>F2t-mAgt=</span><span style='color:#000000;'>mAv</span><span style='color:#000000;'>'</span><span style='color:#000000;'>,</span></p><p><span style='color:#000000;'>對</span><span style='color:#000000;'>B(</span><span style='color:#000000;'>取向下為正方向</span><span style='color:#000000;'>)</span><span style='color:#000000;'>,則有:</span><span style='color:#000000;'>-F1t+mBgt=</span><span style='color:#000000;'>mBv</span><span style='color:#000000;'>'-</span><span style='color:#000000;'>mBvB</span><span style='color:#000000;'>;</span><img src="E:/demo/image_4.svg" style="width:9pt;height:14.25pt"/><span style='color:#000000;'> </span></p><p><span style='color:#000000;'>而</span><span style='color:#000000;'>F1=F2</span></p><p><span style='color:#000000;'>且</span><span style='color:#000000;'>vB</span><span style='color:#000000;'>=6m/s</span><span style='color:#000000;'>,</span></p><p><span style='color:#000000;'>得:</span><span style='color:#000000;'>-</span><span style='color:#000000;'>gt</span><span style='color:#000000;'>=2v'+v'-6</span></p><p><span style='color:#000000;'>由於綳直時間極短,因此有:</span><span style='color:#000000;'>v'=2 m/s</span></p><p><span style='color:#000000;'>(3)</span><span style='color:#000000;'>細繩綳直后,</span><span style='color:#000000;'>A</span><span style='color:#000000;'>、</span><span style='color:#000000;'>B</span><span style='color:#000000;'>一起運動,</span><span style='color:#000000;'>B</span><span style='color:#000000;'>恰好可以和地面接觸,說明此時</span><span style='color:#000000;'>A</span><span style='color:#000000;'>、</span><span style='color:#000000;'>B</span><span style='color:#000000;'>的速度為零,</span></p><p><span style='color:#000000;'>這一過程中</span><span style='color:#000000;'>A</span><span style='color:#000000;'>、</span><span style='color:#000000;'>B</span><span style='color:#000000;'>組成的系統機械能守恆,有:</span></p><p><span style='color:#000000;'>12(</span><span style='color:#000000;'>mA+</span><span style='color:#000000;'>mB</span><span style='color:#000000;'>)v</span><span style='color:#000000;'>'2+mBgH=</span><span style='color:#000000;'>mAgH</span></p><p><span style='color:#000000;'>代入數據解得:</span><span style='color:#000000;'>H=0.6 m</span><span style='color:#000000;'>。</span></p><p><span style='color:#000000;'>(1)</span><span style='color:#000000;'>運動時間為</span><span style='color:#000000;'>0.6s</span><span style='color:#000000;'>;</span></p><p><span style='color:#000000;'>(2)A</span><span style='color:#000000;'>的最大速度的大小為</span><span style='color:#000000;'>2m/s</span><span style='color:#000000;'>;</span></p><p><span style='color:#000000;'>(3)</span><span style='color:#000000;'>初始時</span><span style='color:#000000;'>B</span><span style='color:#000000;'>離地面的高度為</span><span style='color:#000000;'>0.6m</span><span style='color:#000000;'>。</span></p><table border=1><tr><td colspan='7'><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math><span style='color:#000000;'> </span><span style='color:#000000;'> </span><span style='color:#000000;'>ᏇᏉᏙᏔᏖᙳᙵ</span><span style='color:#000000;'>‡Ω</span><span style='color:#000000;'>𐒸𐒷𐓐</span><span style='color:#000000;'>Œ</span><span style='color:#000000;'>↖↘∏ⅷ⑩≌</span><span style='color:#000000;'>〇█★┣</span><span style='color:#000000;'>ð♫♣♂♀</span></p></td></tr><tr><td><p><span style='color:#000000;'>物理公式</span></p></td><td colspan='2'><p><span style='color:#000000;'>復雜的數學公式</span></p></td><td colspan='2'><p><span style='color:#000000;'>化學公式</span></p></td><td colspan='2'><p><span style='color:#000000;'>圖片</span></p></td></tr><tr><td colspan='2'><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>F</mi><mo>=</mo><mi>G</mi><mfrac><mrow><msub><mrow><mi>m</mi></mrow><mrow><mn>1</mn></mrow></msub><msub><mrow><mi>m</mi></mrow><mrow><mn>2</mn></mrow></msub></mrow><mrow><msup><mrow><mi>r</mi></mrow><mrow><mn>2</mn></mrow></msup></mrow></mfrac><mo>,</mo><mi mathvariant="normal"> </mi><mi mathvariant="normal"> </mi><mi>G</mi><mo>=</mo><mn>6.67</mn><mo>×</mo><msup><mrow><mn>10</mn></mrow><mrow><mo>-</mo><mn>11</mn></mrow></msup></math></p></td><td colspan='2'><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mfenced separators="|"><mrow><mi>x</mi><mo>+</mo><mi>a</mi></mrow></mfenced></mrow><mrow><mi>n</mi></mrow></msup><mo>=</mo><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><mfrac linethickness="0pt"><mrow><mi>n</mi></mrow><mrow><mi>k</mi></mrow></mfrac></mrow></mfenced><msup><mrow><mi>x</mi></mrow><mrow><mi>k</mi></mrow></msup><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msup></mrow></mrow></math></p></td><td colspan='2'><p><img src="E:/demo/image_5.svg" style="width:9pt;height:14.25pt"/><span style='color:#000000;'> </span><img src="E:/demo/image_6.svg" style="width:9pt;height:14.25pt"/>
<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msub><mrow><mi>H</mi></mrow><mrow><mn>2</mn></mrow></msub><mo>↑</mo><mo>+</mo><msub><mrow><mi>O</mi></mrow><mrow><mn>2</mn></mrow></msub><mo>↑</mo><mo>→</mo><msub><mrow><mi>H</mi></mrow><mrow><mn>2</mn></mrow></msub><mi>O</mi></math><span style='color:#000000;'>. </span></p></td><td><p><img src="E:/demo/image_7.jpeg" width="81" height="88" /></p></td></tr></table><p></p>
<p>【試卷】學校2020年第二學期期末考試卷</p><p>【科目】數學<img src="E:/demo/image_0.svg" style="width:9pt;height:14.25pt"/></p><p>一、單選題</p><p>【題文】若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是()</p><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mfrac><mrow><mo>-</mo><mi mathvariant="normal">b</mi><mo>±</mo><msqrt><msup><mrow><mi mathvariant="normal">b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi mathvariant="normal">a</mi><mi mathvariant="normal">c</mi></msqrt></mrow><mrow><mn>2</mn><mi mathvariant="normal">a</mi></mrow></mfrac></math></p><p>【選項】A、x≥2B、x>1</p><p>C、x≥0D、x≤1</p><p>【答案】A</p><p>【解析】y-2≥0,y大於等於2.故x≥2</p><p>【結束】</p><p>【題文】若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是()</p><p>【選項】A、x≥2B、x>1C、x≥0D、x≤1</p><p>【答案】B</p><p>【解析】y-2≥0,y大於等於2.故x≥2</p><p>【結束】</p><p>【題文】若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是()</p><p>【選項】A、x≥2</p><p>B、x>1</p><p>C、x≥0</p><p>D、x≤1</p><p>E、x≤2</p><p>【答案】B</p><p>【解析】y-2≥0,y大於等於2.故x≥2</p><p>【結束】</p><p>二、多選題</p><p>【題文】在實數-1、0、1、2中,正數有是()</p><p><img src="E:/demo/image_1.jpeg" width="118" height="88" /></p><p>【選項】A.-1</p><p>這是選項換行的部分</p><p>B.1</p><p>C.0</p><p>D.2</p><p>【答案】B、D</p><p>【解析】正數的基本定義</p><p>【結束】</p><p>三、完形填空題</p><p>【題文】As a volunteer crisis counselor with Crisis Text Line, a free hotline, all via text messages, I am very proud. _________most of thetexters who reach out to us are under the age of 25, this activity _________ me with the chance to interact with the _________ generation.</p><p>【小題1】A.IfB.ThoughC.But D.Since</p><p>【小題2】A.providesB.equipsC.charges D.presents</p><p>【小題3】A.olderB.youngerC.former D.later</p><p>【答案】</p><p>【小題1】B【小題2】C【小題3】A</p><p>【解析】</p><p>【結束】</p><p></p>
<br/> 【題文】若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是取值范為是()<table border=1><tr><td><p>數學公式</p></td><td><p>物理公式</p></td><td><p>圖片</p></td></tr><tr><td><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>f</mi><mfenced separators="|"><mrow><mi>x</mi></mrow></mfenced><mo>=</mo><msub><mrow><mi>a</mi></mrow><mrow><mn>0</mn></mrow></msub><mo>+</mo><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>∞</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><msub><mrow><mi>a</mi></mrow><mrow><mi>n</mi></mrow></msub><mrow><mrow><mi mathvariant="normal">cos</mi></mrow><mo></mo><mrow><mfrac><mrow><mi>n</mi><mi>π</mi><mi>x</mi></mrow><mrow><mi>L</mi></mrow></mfrac></mrow></mrow><mo>+</mo><msub><mrow><mi>b</mi></mrow><mrow><mi>n</mi></mrow></msub><mrow><mrow><mi mathvariant="normal">sin</mi></mrow><mo></mo><mrow><mfrac><mrow><mi>n</mi><mi>π</mi><mi>x</mi></mrow><mrow><mi>L</mi></mrow></mfrac></mrow></mrow></mrow></mfenced></mrow></mrow></math></p></td><td><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>F</mi><mo>=</mo><mi>G</mi><mfrac><mrow><msub><mrow><mi>m</mi></mrow><mrow><mn>1</mn></mrow></msub><msub><mrow><mi>m</mi></mrow><mrow><mn>2</mn></mrow></msub></mrow><mrow><msup><mrow><mi>r</mi></mrow><mrow><mn>2</mn></mrow></msup></mrow></mfrac><mo>,</mo><mi mathvariant="normal"> </mi><mi mathvariant="normal"> </mi><mi>G</mi><mo>=</mo><mn>6.67</mn><mo>×</mo><msup><mrow><mn>10</mn></mrow><mrow><mo>-</mo><mn>11</mn></mrow></msup></math></p></td><td><p><img src="E:/demo/image_0.jpeg" width="118" height="88" /></p></td></tr></table><img src="E:/demo/image_0.jpeg" width="118" height="88" />
<br/> 【題文】<table border=1><tr><td><p><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi></mrow></msup><msup><mrow><mi>a</mi></mrow><mrow><mi>m</mi></mrow></msup><mo>=</mo><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi><mo>+</mo><mi>m</mi></mrow></msup></math></p></td><td><p>≌∏█♀</p></td><td><p></p></td></tr></table>若<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi><mo>≥</mo><mi mathvariant="normal">y</mi></math>,<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">y</mi><mo>-</mo><mn>2</mn><mo>≥</mo><mn>0</mn></math>,則<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi mathvariant="normal">x</mi></math>的取值范為是()<?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mfrac><mrow><mo>-</mo><mi mathvariant="normal">b</mi><mo>±</mo><msqrt><msup><mrow><mi mathvariant="normal">b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi mathvariant="normal">a</mi><mi mathvariant="normal">c</mi></msqrt></mrow><mrow><mn>2</mn><mi mathvariant="normal">a</mi></mrow></mfrac></math>
<br/>
<table border=1><tr><td>1one</td><td colspan='2'>數學公式</td><td>Three</td><td>Four</td><td>Six</td><td>Seven</td><td>eight</td></tr><tr><td rowspan='26'>這是一個公告 </td><td rowspan='16'><img src="E:/demo/image_0.png" width="34" height="117" /></td><td rowspan='6'><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><mi>x</mi><mo>=</mo><mfrac><mrow><mo>-</mo><mi>b</mi><mo>±</mo><msqrt><msup><mrow><mi>b</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>-</mo><mn>4</mn><mi>a</mi><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></math></td><td>1</td><td rowspan='26'><img src="E:/demo/image_1.png" width="34" height="117" /></td><td rowspan='26'></td><td rowspan='26'></td><td rowspan='4'></td></tr><tr><td></td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td><td rowspan='2'></td></tr><tr><td>5</td></tr><tr><td rowspan='10'><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mfenced separators="|"><mrow><mi>x</mi><mo>+</mo><mi>a</mi></mrow></mfenced></mrow><mrow><mi>n</mi></mrow></msup><mo>=</mo><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><mfrac linethickness="0pt"><mrow><mi>n</mi></mrow><mrow><mi>k</mi></mrow></mfrac></mrow></mfenced><msup><mrow><mi>x</mi></mrow><mrow><mi>k</mi></mrow></msup><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msup></mrow></mrow></math></td><td>6</td><td></td></tr><tr><td>7</td><td rowspan='4'></td></tr><tr><td>8</td></tr><tr><td>9</td></tr><tr><td>0</td></tr><tr><td>11</td><td rowspan='2'></td></tr><tr><td>12</td></tr><tr><td>1</td><td rowspan='3'></td></tr><tr><td>1</td></tr><tr><td>1</td></tr><tr><td rowspan='9'></td><td rowspan='9'><?xml version="1.0" encoding="UTF-16"?><math xmlns="http://www.w3.org/1998/Math/MathML" ><msup><mrow><mi>e</mi></mrow><mrow><mi>x</mi></mrow></msup><mo>=</mo><mn>1</mn><mo>+</mo><mfrac><mrow><mi>x</mi></mrow><mrow><mn>1</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><msup><mrow><mi>x</mi></mrow><mrow><mn>2</mn></mrow></msup></mrow><mrow><mn>2</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mfrac><mrow><msup><mrow><mi>x</mi></mrow><mrow><mn>3</mn></mrow></msup></mrow><mrow><mn>3</mn><mo>!</mo></mrow></mfrac><mo>+</mo><mo>…</mo><mo>,</mo><mi mathvariant="normal"> </mi><mi mathvariant="normal"> </mi><mo>-</mo><mi>∞</mi><mo><</mo><mi>x</mi><mo><</mo><mi>∞</mi></math></td><td>11</td><td></td></tr><tr><td>1</td><td rowspan='9'></td></tr><tr><td>12</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr><tr><td>8</td></tr><tr><td colspan='2'></td><td>9</td></tr><tr><td>好的</td><td colspan='2'>好的</td><td>好的</td><td>好的</td><td></td><td></td><td></td></tr></table>
</html>