Please create a colorful handbook pdf from from list mentioned below,write list of vocabulary words list with respelling of individual for pronunciation of vocabulary words in bracket and it's meaning in English and later in Russian language for all individual vocabulary words and also add 3 daily life use of vocabulary as examples of sentences with it's Russian translation under every sentence. Make it more colorful as individual vocabulary words should be at top in different background with meaning in English and Russian and 3 examples in different color background for easy differentiate by eyes. Later in next pages also write 10 conversation questions for C1 proficiency Cambridge speaking practice test from the same vocabulary words used in list.The conversation questions should be logical and not and not funny. Tart Spry Fleeting Sedate True blue Unadorned Singular (very strange) Flimsy Magnanimous Perceptive Sagacious Quintessential Sordid Soporific Punctilious Munificent Irate Gelid Torrid Jejune Elated Incisive Rugged Pompous Blistering ( very hot) Somber Stoic Exquisite Majestic Ravishing

Reading File
Running Command

ls -la /tmp/workspace/; fc-list | grep -i -E "dejavu|noto|liberation|roboto|open" | head -30

Running Command

fc-list : family file | grep -v -i "noto sans\[" | sort | head -60; python -c "import reportlab;print(reportlab.__version__)"; pip list 2>/dev/null | grep -i -E "fonttools|weasy|matplotlib"

Running Command

mkdir -p /tmp/workspace/vocab-handbook && cat > /tmp/workspace/vocab-handbook/data.py <<'EOF' # word, respelling, pos, EN meaning, RU meaning, [(en, ru) x3] W = [ ("Tart","tahrt","adjective", "Having a sharp, sour taste; (of words) sharp and cutting.", "Кислый, терпкий на вкус; (о речи) резкий, язвительный.", [("This green apple is so <b>tart</b> that I have to add a spoonful of honey.","Это зелёное яблоко такое кислое, что мне приходится добавлять ложку мёда."), ("She gave a <b>tart</b> reply when her roommate forgot to wash the dishes again.","Она дала резкий ответ, когда соседка по комнате опять забыла помыть посуду."), ("I love the <b>tart</b> flavour of cranberry juice at breakfast.","Я люблю терпкий вкус клюквенного сока на завтрак.")]), ("Spry","sprye","adjective", "Lively, active and full of energy, especially said of an older person.", "Бодрый, проворный, энергичный (особенно о пожилом человеке).", [("My grandfather is eighty, but he is still <b>spry</b> enough to climb the stairs two at a time.","Моему дедушке восемьдесят, но он всё ещё достаточно бодр, чтобы подниматься по лестнице через ступеньку."), ("Our neighbour is a <b>spry</b> old lady who walks to the market every morning.","Наша соседка - бодрая пожилая дама, которая каждое утро ходит на рынок пешком."), ("After a good night's sleep, I felt <b>spry</b> and ready for the day.","После крепкого сна я чувствовал себя бодрым и готовым к новому дню.")]), ("Fleeting","FLEE-ting","adjective", "Lasting for a very short time; passing quickly.", "Мимолётный, быстротечный, недолговечный.", [("I only caught a <b>fleeting</b> glimpse of the bus before it turned the corner.","Я лишь мельком увидел автобус, прежде чем он свернул за угол."), ("The joy of buying a new phone is often <b>fleeting</b>.","Радость от покупки нового телефона часто бывает мимолётной."), ("We had a <b>fleeting</b> conversation in the lift, and then she was gone.","Мы коротко поговорили в лифте, а потом она ушла.")]), ("Sedate","sih-DAYT","adjective", "Calm, quiet, dignified and unhurried. (As a verb: to give a drug to make someone calm or sleepy.)", "Спокойный, степенный, размеренный. (Как глагол: давать успокоительное.)", [("On Sundays we take a <b>sedate</b> walk along the river.","По воскресеньям мы совершаем неспешную прогулку вдоль реки."), ("The taxi driver kept a <b>sedate</b> pace because of the heavy rain.","Из-за сильного дождя таксист ехал размеренно, не спеша."), ("After the noisy party, the café felt pleasantly <b>sedate</b>.","После шумной вечеринки кафе показалось приятно тихим и спокойным.")]), ("True blue","TROO bloo","adjective (phrase)", "Completely loyal, faithful and reliable.", "Верный, преданный, надёжный до конца.", [("Anna is a <b>true blue</b> friend who always keeps my secrets.","Анна - преданная подруга, которая всегда хранит мои секреты."), ("He has been a <b>true blue</b> supporter of the local football club for thirty years.","Он тридцать лет остаётся верным болельщиком местного футбольного клуба."), ("A <b>true blue</b> colleague will help you even when the deadline is tomorrow.","Настоящий верный коллега поможет вам, даже если срок сдачи уже завтра.")]), ("Unadorned","un-uh-DORND","adjective", "Plain and simple; without decoration or extra detail.", "Неукрашенный, простой, без прикрас.", [("She prefers an <b>unadorned</b> white shirt to anything with frills.","Она предпочитает простую белую рубашку любым вещам с рюшами."), ("The room was <b>unadorned</b>, with only a bed and a small desk.","Комната была без украшений: только кровать и небольшой стол."), ("He gave an <b>unadorned</b> account of what happened, without exaggeration.","Он изложил произошедшее без прикрас, ничего не преувеличивая.")]), ("Singular","SING-gyuh-ler","adjective", "Very strange or unusual; also remarkable or exceptional.", "Очень странный, необычный; также исключительный, удивительный.", [("There was a <b>singular</b> smell in the kitchen, and nobody could explain it.","На кухне стоял странный запах, и никто не мог его объяснить."), ("It was a <b>singular</b> coincidence that we met again in a different country.","Это было удивительное совпадение, что мы снова встретились в другой стране."), ("He wore a <b>singular</b> hat that made everyone on the tram stare.","Он носил такую странную шляпу, что все в трамвае смотрели на него.")]), ("Flimsy","FLIM-zee","adjective", "Thin, weak and easily broken; (of an excuse) not convincing.", "Хлипкий, непрочный, тонкий; (об оправдании) неубедительный.", [("This <b>flimsy</b> umbrella broke in the first gust of wind.","Этот хлипкий зонт сломался от первого порыва ветра."), ("The shelf is too <b>flimsy</b> to hold all those heavy books.","Эта полка слишком непрочная, чтобы выдержать столько тяжёлых книг."), ("Being stuck in traffic is a <b>flimsy</b> excuse for being an hour late.","Пробка - неубедительная отговорка для опоздания на час.")]), ("Magnanimous","mag-NAN-ih-mus","adjective", "Generous and forgiving, especially towards a rival or someone less powerful.", "Великодушный, благородный, щедрый на прощение (особенно к сопернику).", [("Although she won the game, she was <b>magnanimous</b> and praised her opponent.","Хотя она выиграла, она проявила великодушие и похвалила соперника."), ("My boss was <b>magnanimous</b> about my mistake and simply asked me to be careful.","Начальник великодушно отнёсся к моей ошибке и просто попросил быть внимательнее."), ("It was <b>magnanimous</b> of him to forgive his neighbour after the long dispute.","Было великодушно с его стороны простить соседа после долгого спора.")]), ("Perceptive","per-SEP-tiv","adjective", "Quick to notice and understand things, especially feelings and hidden details.", "Проницательный, наблюдательный, чуткий.", [("My teacher is so <b>perceptive</b> that she notices when a student is upset.","Моя учительница настолько проницательна, что замечает, когда ученик расстроен."), ("A <b>perceptive</b> waiter brought us water before we even asked.","Внимательный официант принёс нам воду раньше, чем мы попросили."), ("She made a <b>perceptive</b> comment about why the shop was losing customers.","Она сделала проницательное замечание о том, почему магазин теряет покупателей.")]), ("Sagacious","suh-GAY-shus","adjective", "Wise, with good judgement and practical common sense.", "Мудрый, рассудительный, сообразительный.", [("My grandmother gave me <b>sagacious</b> advice about choosing a flat.","Бабушка дала мне мудрый совет по выбору квартиры."), ("It was a <b>sagacious</b> decision to save money before changing jobs.","Откладывать деньги перед сменой работы было мудрым решением."), ("He is a <b>sagacious</b> businessman who rarely makes a hasty choice.","Он мудрый предприниматель, который редко принимает поспешные решения.")]), ("Quintessential","kwin-tih-SEN-shul","adjective", "Being the most perfect or typical example of something.", "Типичный, классический; воплощающий самую суть чего-либо.", [("Fish and chips is the <b>quintessential</b> British meal.","Рыба с картошкой фри - классическое британское блюдо."), ("With its small cafés and cobbled streets, this is the <b>quintessential</b> old European town.","С маленькими кафе и мощёными улочками это типичный старый европейский город."), ("My dad, always fixing something in the garage, is the <b>quintessential</b> handyman.","Мой папа, вечно что-то чинящий в гараже, - воплощение мастера на все руки.")]), ("Sordid","SOR-did","adjective", "Dirty and unpleasant; morally low, dishonest or shameful.", "Грязный, убогий; низкий, неприглядный, постыдный.", [("The reporter uncovered the <b>sordid</b> details of the scandal.","Журналист раскрыл неприглядные подробности скандала."), ("They found the flat in a <b>sordid</b> state, with rubbish everywhere.","Они нашли квартиру в ужасно грязном состоянии, повсюду был мусор."), ("I do not want to hear the <b>sordid</b> story behind their divorce.","Я не хочу слушать постыдную историю их развода.")]), ("Soporific","sop-uh-RIF-ik","adjective", "Making you feel sleepy; causing sleep.", "Усыпляющий, снотворный, навевающий сон.", [("The teacher's <b>soporific</b> voice made half the class yawn.","Усыпляющий голос учителя заставил зевать половину класса."), ("A warm bath and a cup of chamomile tea have a <b>soporific</b> effect on me.","Тёплая ванна и чашка ромашкового чая действуют на меня усыпляюще."), ("The long, <b>soporific</b> train ride made me nod off over my book.","Долгая убаюкивающая поездка на поезде заставила меня задремать над книгой.")]), ("Punctilious","punk-TIL-ee-us","adjective", "Very careful about details, rules and correct behaviour.", "Педантичный, щепетильный, скрупулёзный.", [("Our accountant is <b>punctilious</b> and checks every number twice.","Наш бухгалтер педантичен и дважды проверяет каждую цифру."), ("He is <b>punctilious</b> about arriving exactly on time for meetings.","Он очень щепетилен в том, чтобы приходить на встречи точно вовремя."), ("The hotel staff were <b>punctilious</b> in following every rule of etiquette.","Персонал отеля скрупулёзно соблюдал все правила этикета.")]), ("Munificent","myoo-NIF-ih-sunt","adjective", "Very generous; giving lavishly.", "Очень щедрый, не скупящийся на дары.", [("A <b>munificent</b> donor paid for the new school library.","Щедрый благотворитель оплатил новую школьную библиотеку."), ("My uncle gave us a <b>munificent</b> wedding gift.","Дядя сделал нам поистине щедрый свадебный подарок."), ("She is <b>munificent</b> with her time and often helps neighbours with shopping.","Она щедро дарит своё время и часто помогает соседям с покупками.")]), ("Irate","eye-RAYT","adjective", "Extremely angry.", "Разгневанный, взбешённый, в ярости.", [("The <b>irate</b> customer demanded to speak to the manager.","Разгневанный клиент потребовал позвать управляющего."), ("My dad was <b>irate</b> when he saw the scratch on his new car.","Папа был в ярости, когда увидел царапину на своей новой машине."), ("<b>Irate</b> passengers shouted at the staff after the flight was cancelled.","Возмущённые пассажиры кричали на сотрудников после отмены рейса.")]), ("Gelid","JEL-id","adjective", "Extremely cold; icy.", "Ледяной, очень холодный, морозный.", [("I jumped into the <b>gelid</b> lake and screamed.","Я прыгнул в ледяное озеро и закричал."), ("A <b>gelid</b> wind blew through the station all morning.","Всё утро по станции гулял ледяной ветер."), ("She gave him a <b>gelid</b> stare when he joked about her mistake.","Она одарила его ледяным взглядом, когда он пошутил над её ошибкой.")]), ("Torrid","TOR-id","adjective", "Very hot and dry; (of feelings) full of passion.", "Знойный, палящий; (о чувствах) пылкий, страстный.", [("We stayed indoors during the <b>torrid</b> afternoon in July.","Мы сидели дома в знойный июльский день."), ("The <b>torrid</b> summer dried up the whole garden.","Знойное лето иссушило весь сад."), ("They had a <b>torrid</b> love affair that lasted just one summer.","У них был страстный роман, который длился всего одно лето.")]), ("Jejune","jih-JOON","adjective", "Naive and simplistic; dull and lacking interest or substance.", "Наивный, поверхностный; пресный, неинтересный.", [("I found the film <b>jejune</b>, with a predictable plot and shallow characters.","Фильм показался мне пресным: предсказуемый сюжет и поверхностные герои."), ("His <b>jejune</b> comments on politics showed he had read very little about it.","Его наивные замечания о политике показали, что он мало об этом читал."), ("The speech was long and <b>jejune</b>, so many people stopped listening.","Речь была длинной и неинтересной, поэтому многие перестали слушать.")]), ("Elated","ih-LAY-tid","adjective", "Extremely happy and excited, usually because of good news or success.", "В восторге, ликующий, окрылённый радостью.", [("I was <b>elated</b> when I heard that I had passed my driving test.","Я был в восторге, когда узнал, что сдал экзамен по вождению."), ("The children were <b>elated</b> to see snow on the first day of winter.","Дети ликовали, увидев снег в первый день зимы."), ("She felt <b>elated</b> after her sister called with good news.","Она была вне себя от радости после звонка сестры с хорошей новостью.")]), ("Incisive","in-SYE-siv","adjective", "Clear, sharp and direct in thought or expression.", "Острый, чёткий, проницательный (о мысли, вопросе, анализе).", [("The journalist asked <b>incisive</b> questions that the minister could not avoid.","Журналист задавал острые вопросы, от которых министр не мог уйти."), ("Her <b>incisive</b> analysis of the budget saved the company money.","Её чёткий анализ бюджета сэкономил деньги компании."), ("I need an <b>incisive</b> friend to tell me honestly if my plan is realistic.","Мне нужен проницательный друг, который честно скажет, реалистичен ли мой план.")]), ("Rugged","RUG-id","adjective", "Rough and uneven (of land); strong, tough and sturdy.", "Пересечённый, неровный (о местности); крепкий, грубоватый, прочный.", [("We hiked across <b>rugged</b> hills far from any road.","Мы шли пешком по пересечённым холмам вдали от любых дорог."), ("He bought <b>rugged</b> boots that can survive muddy trails.","Он купил прочные ботинки, которые выдержат грязные тропы."), ("The fisherman had a <b>rugged</b> face, weathered by years at sea.","У рыбака было грубоватое, обветренное годами в море лицо.")]), ("Pompous","POM-pus","adjective", "Self-important; speaking or acting in an overly formal and proud way.", "Напыщенный, чванливый, помпезный.", [("The manager gave a <b>pompous</b> speech about his own success.","Менеджер произнёс напыщенную речь о собственных успехах."), ("I dislike waiters who speak in a <b>pompous</b> tone.","Мне не нравятся официанты, которые говорят напыщенным тоном."), ("He became <b>pompous</b> after his promotion and stopped talking to old friends.","После повышения он стал чванливым и перестал общаться со старыми друзьями.")]), ("Blistering","BLIS-ter-ing","adjective", "Extremely hot; also very harsh or severe (e.g. criticism).", "Палящий, нестерпимо жаркий; также жёсткий, уничтожающий (о критике).", [("It was a <b>blistering</b> day, and even the pavement felt too hot to touch.","Был нестерпимо жаркий день, и даже тротуар казался слишком горячим, чтобы к нему прикоснуться."), ("We waited for the bus in the <b>blistering</b> heat of the afternoon.","Мы ждали автобус в палящую дневную жару."), ("Critics gave the new restaurant a <b>blistering</b> review.","Критики дали новому ресторану уничтожающий отзыв.")]), ("Somber","SOM-ber","adjective", "Dark, gloomy and serious in mood or colour.", "Мрачный, унылый, серьёзный; тёмный по цвету.", [("Everyone wore <b>somber</b> clothes to the funeral.","Все пришли на похороны в тёмной, строгой одежде."), ("The news report had a <b>somber</b> tone as it described the flood.","Репортаж о наводнении был выдержан в мрачном тоне."), ("He grew <b>somber</b> when he talked about leaving his hometown.","Он помрачнел, когда заговорил о том, что покидает родной город.")]), ("Stoic","STOH-ik","adjective / noun", "Able to accept pain, difficulty or bad luck calmly, without complaining.", "Стойкий, невозмутимый; спокойно переносящий трудности.", [("She was <b>stoic</b> about the long wait at the airport and never complained.","Она стойко переносила долгое ожидание в аэропорту и не жаловалась."), ("My father stays <b>stoic</b> when things go wrong and simply looks for a solution.","Мой отец сохраняет невозмутимость, когда что-то идёт не так, и просто ищет решение."), ("The team remained <b>stoic</b> after the defeat and went back to training.","Команда осталась стойкой после поражения и вернулась к тренировкам.")]), ("Exquisite","ek-SKWIZ-it or EK-skwiz-it","adjective", "Extremely beautiful and delicately made; of very high quality.", "Изысканный, утончённый, великолепный.", [("The bride wore an <b>exquisite</b> lace dress.","На невесте было изысканное кружевное платье."), ("We had an <b>exquisite</b> dinner at a small restaurant by the sea.","Мы изысканно поужинали в маленьком ресторане у моря."), ("She has <b>exquisite</b> taste in furniture.","У неё утончённый вкус в мебели.")]), ("Majestic","muh-JES-tik","adjective", "Grand, impressive and dignified in appearance.", "Величественный, грандиозный, царственный.", [("We watched the sun rise over the <b>majestic</b> mountains.","Мы наблюдали восход солнца над величественными горами."), ("A <b>majestic</b> old oak tree stands in the middle of our park.","Величественный старый дуб стоит в центре нашего парка."), ("The <b>majestic</b> cathedral dominates the city centre.","Величественный собор возвышается над центром города.")]), ("Ravishing","RAV-ih-shing","adjective", "Extremely beautiful and delightful; enchanting.", "Восхитительный, потрясающе красивый, очаровательный.", [("She looked <b>ravishing</b> in a red dress at her friend's wedding.","Она выглядела потрясающе в красном платье на свадьбе подруги."), ("From the balcony we had a <b>ravishing</b> view of the bay at sunset.","С балкона открывался восхитительный вид на бухту на закате."), ("The pastry chef made a <b>ravishing</b> cake decorated with fresh flowers.","Кондитер испёк восхитительный торт, украшенный свежими цветами.")]), ] Q = [ ("Ageing and lifestyle", "Some people remain remarkably <b>spry</b> well into their eighties, while others prefer a more <b>sedate</b> way of life. What factors influence how active people are as they grow older, and how can society support both groups?", "spry, sedate"), ("Media and entertainment", "Critics often describe parts of the media as <b>sordid</b> because of their focus on scandal, and some programmes as <b>jejune</b> or even <b>soporific</b>. What responsibility do television producers and publishers have towards their audience?", "sordid, jejune, soporific"), ("First impressions", "We often form <b>fleeting</b> impressions of people we meet, especially if their behaviour seems <b>singular</b>. How reliable are first impressions, and what makes some people more <b>perceptive</b> judges of character than others?", "fleeting, singular, perceptive"), ("Leadership", "Is it more important for a leader to be <b>incisive</b> and quick to decide, or <b>sagacious</b> and patient? In your experience, how does a <b>pompous</b> attitude affect a leader's relationship with the team?", "incisive, sagacious, pompous"), ("Reacting to a crisis", "During a national crisis, public figures are often expected to remain <b>stoic</b> and to adopt a <b>somber</b> tone. Do you think this is the right approach, or can it be more honest to show emotion, even when citizens are <b>irate</b>?", "stoic, somber, irate"), ("Feedback at work", "A manager who is <b>punctilious</b> about quality may give <b>tart</b> feedback, whereas praise can leave employees <b>elated</b>. Which style of feedback do you think is more effective for long-term motivation, and why?", "punctilious, tart, elated"), ("Generosity and loyalty", "Wealthy people who are <b>munificent</b> donors often fund libraries, hospitals and museums. Should public services depend on such generosity? What qualities make someone <b>magnanimous</b> in victory, and what makes a friend <b>true blue</b>?", "munificent, magnanimous, true blue"), ("Extreme weather", "More and more cities experience <b>torrid</b> summers, <b>blistering</b> heatwaves or <b>gelid</b> winters. How do extreme temperatures change people's daily routines, and what should local authorities do to prepare for them?", "torrid, blistering, gelid"), ("Landscapes and tourism", "Some travellers prefer <b>rugged</b>, remote landscapes, while others choose places known for <b>majestic</b> buildings or <b>ravishing</b> views. What would you consider the <b>quintessential</b> landscape of your country, and how can tourism be managed so it does not damage it?", "rugged, majestic, ravishing, quintessential"), ("Design and consumer choices", "Modern homes are often <b>unadorned</b> and minimalist, yet many people still value <b>exquisite</b> craftsmanship. Why do consumers so often buy cheap, <b>flimsy</b> products, and should they be encouraged to invest in items that last?", "unadorned, exquisite, flimsy"), ] EOF echo ok

Running Command

cat > /tmp/workspace/vocab-handbook/build.py <<'EOF' import sys sys.path.insert(0,'/tmp/workspace/vocab-handbook') from data import W, Q from reportlab.lib.pagesizes import A4 from reportlab.lib.units import mm from reportlab.lib import colors from reportlab.lib.styles import ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.fonts import addMapping from reportlab.platypus import (BaseDocTemplate, PageTemplate, Frame, Paragraph, Spacer, Table, TableStyle, PageBreak, KeepTogether, NextPageTemplate) D='/usr/share/fonts/google-droid-sans-fonts/' pdfmetrics.registerFont(TTFont('DS',D+'DroidSans.ttf')) pdfmetrics.registerFont(TTFont('DSB',D+'DroidSans-Bold.ttf')) pdfmetrics.registerFontFamily('DS',normal='DS',bold='DSB',italic='DS',boldItalic='DSB') H=colors.HexColor PAGE_W,PAGE_H=A4 M=14*mm CW=PAGE_W-2*M HEAD=['E53935','FB8C00','F9A825','43A047','00897B','039BE5','3949AB','8E24AA','D81B60','6D4C41','00ACC1','7CB342','F4511E','5E35B1','C2185B'] HEAD=[H('#'+c) for c in HEAD] EX_BG=[H('#FFE3D6'),H('#D9F5E3'),H('#E8DCFB')] EX_BADGE=[H('#F4511E'),H('#00A66B'),H('#7E57C2')] EX_RU=[H('#B23A12'),H('#00704A'),H('#5A3AA0')] EN_BG=H('#FFF6CC'); RU_BG=H('#DDEFFD') def st(name,**k): k.setdefault('fontName','DS'); return ParagraphStyle(name,**k) s_word=st('w',fontName='DSB',fontSize=26,leading=30,textColor=colors.white) s_resp=st('r',fontSize=13,leading=16,textColor=colors.white) s_pos=st('p',fontSize=10,leading=12,textColor=colors.white,alignment=2) s_en=st('en',fontSize=10.5,leading=14,textColor=H('#222222')) s_ru=st('ru',fontSize=10.5,leading=14,textColor=H('#0D47A1')) s_exen=st('ee',fontSize=10.5,leading=14,textColor=H('#222222')) s_label=st('lb',fontName='DSB',fontSize=10,leading=12,textColor=colors.white,alignment=TA_CENTER) s_num=st('nm',fontName='DSB',fontSize=15,leading=18,textColor=colors.white,alignment=TA_CENTER) def card(i,w): word,resp,pos,en,ru,ex=w hc=HEAD[i%len(HEAD)] left=[Paragraph(f'{i+1}. {word}',s_word),Spacer(1,2),Paragraph(f'[{resp}]',s_resp)] head=Table([[left,Paragraph(pos.upper() if False else pos,s_pos)]],colWidths=[CW-45*mm,45*mm]) head.setStyle(TableStyle([('VALIGN',(0,0),(0,0),'MIDDLE'),('VALIGN',(1,0),(1,0),'TOP'), ('LEFTPADDING',(0,0),(-1,-1),0),('RIGHTPADDING',(0,0),(-1,-1),0),('TOPPADDING',(0,0),(-1,-1),0),('BOTTOMPADDING',(0,0),(-1,-1),0)])) rows=[[head,''], [Paragraph('EN',s_label),Paragraph(f'<b>Meaning:</b> {en}',s_en)], [Paragraph('RU',s_label),Paragraph(f'<b>Значение:</b> {ru}',s_ru)]] for k,(e,r) in enumerate(ex): rows.append([Paragraph(str(k+1),s_num), [Paragraph(e,s_exen),Spacer(1,2),Paragraph(r,st(f'x{k}',fontSize=10,leading=13,textColor=EX_RU[k]))]]) t=Table(rows,colWidths=[13*mm,CW-13*mm]) cmds=[('SPAN',(0,0),(1,0)),('BACKGROUND',(0,0),(1,0),hc), ('BACKGROUND',(0,1),(0,1),H('#F9A825')),('BACKGROUND',(1,1),(1,1),EN_BG), ('BACKGROUND',(0,2),(0,2),H('#1E88E5')),('BACKGROUND',(1,2),(1,2),RU_BG), ('VALIGN',(0,0),(-1,-1),'MIDDLE'), ('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7), ('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5), ('TOPPADDING',(0,0),(1,0),9),('BOTTOMPADDING',(0,0),(1,0),9), ('LEFTPADDING',(0,0),(1,0),12),('RIGHTPADDING',(0,0),(1,0),12), ('LINEBELOW',(0,0),(-1,-2),1.5,colors.white)] for k in range(3): r=3+k cmds+= [('BACKGROUND',(0,r),(0,r),EX_BADGE[k]),('BACKGROUND',(1,r),(1,r),EX_BG[k])] t.setStyle(TableStyle(cmds)) return t def deco(c,doc): c.saveState() cols=[H('#E53935'),H('#FB8C00'),H('#F9A825'),H('#43A047'),H('#039BE5'),H('#8E24AA')] w=PAGE_W/len(cols) for i,col in enumerate(cols): c.setFillColor(col); c.rect(i*w,PAGE_H-6*mm,w,6*mm,stroke=0,fill=1) c.rect(i*w,0,w,4*mm,stroke=0,fill=1) c.setFont('DS',8.5); c.setFillColor(H('#555555')) c.drawString(M,8*mm,'C1 Vocabulary Handbook | Словарный справочник C1') c.drawRightString(PAGE_W-M,8*mm,f'Page {doc.page}') c.restoreState() def cover(c,doc): c.saveState() c.setFillColor(H('#1A237E')); c.rect(0,0,PAGE_W,PAGE_H,stroke=0,fill=1) import random; random.seed(4) for col,(x,y,r) in zip(HEAD*2,[(30,780,90),(560,800,70),(520,560,110),(40,300,80),(300,60,100),(570,120,60),(80,560,45),(450,330,40),(200,830,40),(280,20,40),(150,150,35),(540,720,35)]): c.setFillColor(col); c.setFillAlpha(0.55); c.circle(x,y,r,stroke=0,fill=1) c.setFillAlpha(1) c.setFillColor(colors.white); c.roundRect(M,PAGE_H/2-70,CW,210,18,stroke=0,fill=1) c.setFillColor(H('#1A237E')); c.setFont('DSB',38); c.drawCentredString(PAGE_W/2,PAGE_H/2+95,'VOCABULARY') c.setFillColor(H('#E53935')); c.setFont('DSB',38); c.drawCentredString(PAGE_W/2,PAGE_H/2+52,'POWER HANDBOOK') c.setFillColor(H('#333333')); c.setFont('DS',14) c.drawCentredString(PAGE_W/2,PAGE_H/2+22,'30 advanced words for C1 Advanced') c.drawCentredString(PAGE_W/2,PAGE_H/2+2,'Pronunciation • English meaning • Русский перевод') c.drawCentredString(PAGE_W/2,PAGE_H/2-18,'3 daily-life examples with Russian translation') c.setFillColor(H('#00897B')); c.setFont('DSB',13) c.drawCentredString(PAGE_W/2,PAGE_H/2-50,'+ 10 Cambridge C1 speaking practice questions') c.setFillColor(colors.white); c.setFont('DS',12) c.drawCentredString(PAGE_W/2,40,'Слова • Произношение • Примеры • Разговорная практика') c.restoreState() doc=BaseDocTemplate('/tmp/workspace/vocab-handbook/C1_Vocabulary_Handbook.pdf',pagesize=A4, leftMargin=M,rightMargin=M,topMargin=14*mm,bottomMargin=16*mm, title='C1 Vocabulary Handbook',author='Orris') fr=Frame(M,16*mm,CW,PAGE_H-30*mm,leftPadding=0,rightPadding=0,topPadding=0,bottomPadding=0) doc.addPageTemplates([PageTemplate('cover',[Frame(0,0,1,1)],onPage=cover),PageTemplate('main',[fr],onPage=deco)]) S=[NextPageTemplate('main'),PageBreak()] # contents s_h1=st('h1',fontName='DSB',fontSize=22,leading=26,textColor=H('#1A237E')) S+= [Paragraph('Contents of Words / Список слов',s_h1),Spacer(1,4), Paragraph('Each word has its own colour. Yellow = English meaning, blue = Russian meaning, then three example sentences (orange, green, purple). / У каждого слова свой цвет: жёлтый - значение по-английски, голубой - по-русски, затем три примера.',st('i',fontSize=10,leading=14,textColor=H('#444444'))),Spacer(1,10)] cells=[] s_chip=st('chip',fontName='DSB',fontSize=11.5,leading=14,textColor=colors.white) s_chip2=st('chip2',fontSize=9,leading=11,textColor=colors.white) rows=[] for r in range(10): row=[] for c in range(3): i=r+10*c row.append([Paragraph(f'{i+1}. {W[i][0]}',s_chip),Paragraph(f'[{W[i][1]}]',s_chip2)]) rows.append(row) ct=Table(rows,colWidths=[CW/3]*3,rowHeights=[38]*10) cs=[('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),9),('GRID',(0,0),(-1,-1),3,colors.white)] for r in range(10): for c in range(3): cs.append(('BACKGROUND',(c,r),(c,r),HEAD[(r+10*c)%len(HEAD)])) ct.setStyle(TableStyle(cs)); S.append(ct) S+=[Spacer(1,14),Paragraph('Pronunciation key / Ключ к произношению',st('k',fontName='DSB',fontSize=12,leading=15,textColor=H('#1A237E'))),Spacer(1,3), Paragraph('Capital letters show the stressed syllable (e.g. <b>sih-DAYT</b>). ah = father, ay = day, ee = see, eye = my, oh = go, oo = food, uh = about (weak sound), ih = sit, zh = vision. / Заглавными буквами выделено ударный слог. Respelling is an English-based guide, not IPA.',st('k2',fontSize=10,leading=14,textColor=H('#333333')))] S.append(PageBreak()) for p in range(0,30,2): S.append(card(p,W[p])); S.append(Spacer(1,12)) S.append(card(p+1,W[p+1])); S.append(PageBreak()) # speaking S.append(Paragraph('Cambridge C1 Advanced Speaking Practice',s_h1)) S.append(Spacer(1,3)) S.append(Paragraph('10 discussion questions (Part 3 and Part 4 style). Try to use the highlighted vocabulary naturally in a 1 to 2 minute answer. Give reasons, examples and a balanced opinion. / 10 вопросов для обсуждения. Постарайтесь естественно использовать выделенные слова.',st('i2',fontSize=10,leading=14,textColor=H('#444444')))) S.append(Spacer(1,8)) s_qt=st('qt',fontName='DSB',fontSize=11.5,leading=14,textColor=colors.white) s_q=st('q',fontSize=10.5,leading=15,textColor=H('#222222')) s_tw=st('tw',fontSize=9.5,leading=12,textColor=H('#333333')) QBG=['#FFE3D6','#D9F5E3','#E8DCFB','#FFF6CC','#DDEFFD'] def qcard(i,q): topic,text,words=q hc=HEAD[(i*3)%len(HEAD)] pal=H(QBG[i%5]) t=Table([[Paragraph(f'Q{i+1}',s_num),Paragraph(topic,s_qt)], ['',Paragraph(text,s_q)], ['',Paragraph(f'<b>Target vocabulary:</b> {words}',s_tw)]], colWidths=[13*mm,CW-13*mm]) t.setStyle(TableStyle([('SPAN',(0,1),(0,2)),('BACKGROUND',(0,0),(0,2),hc),('BACKGROUND',(1,0),(1,0),hc), ('BACKGROUND',(1,1),(1,2),pal),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),8), ('RIGHTPADDING',(0,0),(-1,-1),8),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5), ('LINEBELOW',(1,0),(1,0),0,colors.white)])) return t for i,q in enumerate(Q): S.append(KeepTogether([qcard(i,q),Spacer(1,9)])) if i==4: S.append(PageBreak()) S.append(Spacer(1,4)) tip=Table([[Paragraph('<b>Speaking tips / Советы:</b> (1) Answer the question directly, then add a reason and an example. (2) Compare two sides before giving your view. (3) Use the target words accurately, not just to show off. / Отвечайте прямо, приводите причину и пример, сравнивайте точки зрения.',st('tp',fontSize=10,leading=14,textColor=colors.white))]],colWidths=[CW]) tip.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),H('#1A237E')),('LEFTPADDING',(0,0),(-1,-1),12),('RIGHTPADDING',(0,0),(-1,-1),12),('TOPPADDING',(0,0),(-1,-1),9),('BOTTOMPADDING',(0,0),(-1,-1),9)])) S.append(tip) doc.build(S) print('built') EOF cd /tmp/workspace/vocab-handbook && python build.py && python -c " import pdfplumber p=pdfplumber.open('C1_Vocabulary_Handbook.pdf');print(len(p.pages)) for i in [1,2,3]: print(p.pages[i].extract_text()[:300]);print('--') "

Running Command

cd /tmp/workspace/vocab-handbook && python -c " import pdfplumber p=pdfplumber.open('C1_Vocabulary_Handbook.pdf') for i in [0,1,2,17]: p.pages[i].to_image(resolution=60).save(f'p{i}.png') "; ls

Reading File
Reading File
Reading File
Running Command

cd /tmp/workspace/vocab-handbook && sed -i 's/colWidths=\[CW-45\*mm,45\*mm\]/colWidths=[CW-24-40*mm,40*mm]/' build.py && python build.py && python -c " import pdfplumber p=pdfplumber.open('C1_Vocabulary_Handbook.pdf') p.pages[1].to_image(resolution=60).save('p1.png') p.pages[16].to_image(resolution=60).save('p16.png') print(len(p.pages))"

Reading File
Reading File
Running Command

cd /tmp/workspace/vocab-handbook && python -c " import pdfplumber p=pdfplumber.open('C1_Vocabulary_Handbook.pdf') p.pages[2].to_image(resolution=60).save('c2.png') p.pages[18].to_image(resolution=60).save('c18.png') "; ls

Reading File
Reading File
Running Command

cd /tmp/workspace/vocab-handbook && python - <<'EOF' s=open('build.py').read() s=s.replace("t=Table([[Paragraph(f'Q{i+1}',s_num),Paragraph(topic,s_qt)],","t=Table([[Paragraph(f'Q{i+1}',st('qn',fontName='DSB',fontSize=13,leading=16,textColor=colors.white,alignment=TA_CENTER)),Paragraph(topic,s_qt)],") s=s.replace("colWidths=[13*mm,CW-13*mm])\n t.setStyle(TableStyle([('SPAN',(0,1)","colWidths=[17*mm,CW-17*mm])\n t.setStyle(TableStyle([('SPAN',(0,1)") s=s.replace("('LEFTPADDING',(0,0),(-1,-1),8),\n ('RIGHTPADDING',(0,0),(-1,-1),8)","('LEFTPADDING',(0,0),(-1,-1),6),\n ('RIGHTPADDING',(0,0),(-1,-1),6)") open('build.py','w').write(s) EOF python build.py && python -c " import pdfplumber p=pdfplumber.open('C1_Vocabulary_Handbook.pdf') print(len(p.pages)); p.pages[18].to_image(resolution=50).save('d18.png') print(p.pages[18].extract_text()[-900:])"

Reading File
The handbook is built and the text layout is correct. The Q10 badge now fits on one line. I didn't re-view the final render, because the preview image failed to save.

C1 Vocabulary Handbook

PDF Document · PDF

It has 19 pages.
  • Cover and contents (pages 1-2): a colourful cover, then a coloured index of all 30 words with their respellings and a short pronunciation key.
  • Word pages (pages 3-17): two words per page, one page for every pair in your list.
    • Each word has a full-width coloured header with the word and its respelling in brackets, for example [sih-DAYT]. Capital letters mark the stressed syllable, and the part of speech is shown on the right.
    • Below the header are a yellow English meaning and a blue Russian meaning.
    • Under those are three daily-life example sentences, each with its Russian translation underneath. The three examples have orange, green and purple backgrounds.
  • Speaking practice (pages 18-19): 10 Cambridge C1-style discussion questions on serious, logical topics such as ageing, media, leadership, feedback at work, extreme weather, tourism and consumer choices. Each question lists its target vocabulary, and the target words are in bold. Together the questions use all 30 words, and a short speaking-tips box closes the document.
  • Respellings: they follow English spelling rules (ah, ay, ee, eye), not IPA. You can check them against a dictionary.
  • Dual meanings: Singular is glossed as "very strange", as you specified, with "remarkable" added. Blistering is glossed as "very hot", with "harsh (criticism)" added.
  • Russian text: I wrote the translations and meanings myself and did not check them against a source. I'd recommend a native-speaker review before classroom use.
  • Spelling: I used the American spelling "Somber" from your list.
This is a shared conversation. Sign in to Orris to start your own chat.