1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334 |
- \input texinfo
- setfilename ../../info/org
- set VERSION 6.17
- dircategory Emacs
- end direntry
- set MAINTAINERSITE
- set AUTHOR Carsten Dominik
- set MAINTAINEREMAIL
- set MAINTAINERCONTACT
- c %**end of header
- c Macro definitions
- macro tsubheading{text}
- subsubheading \text\
- ifnotinfo
- b{\text\}
- end macro
- value{VERSION}).
- Copyright
- quotation
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with no
- Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
- and with the Back-Cover Texts as in (a) below. A copy of the license
- is included in the section entitled ``GNU Free Documentation License.''
- (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
- modify this GNU manual. Buying copies from the FSF supports it in
- developing GNU and promoting software freedom.''
- This document is part of a collection distributed under the GNU Free
- Documentation License. If you want to distribute this document
- separately from the collection, you can do so by adding a copy of the
- license to the document, as described in section 6 of the license.
- end copying
- title The Org Manual
- value{VERSION}
- c The following two commands start the copyright page.
- vskip 0pt plus 1filll
- end titlepage
- contents
- node Top, Introduction, (dir), (dir)
- insertcopying
- menu
- * Introduction:: Getting started
- * Document Structure:: A tree works like your brain
- * Tables:: Pure magic for quick formatting
- * Hyperlinks:: Notes in context
- * TODO Items:: Every tree branch can be a TODO item
- * Tags:: Tagging headlines and matching sets of tags
- * Properties and Columns:: Storing information about an entry
- * Dates and Times:: Making items useful for planning
- * Capture:: Creating tasks and attaching files
- * Agenda Views:: Collecting information into views
- * Embedded LaTeX:: LaTeX fragments and formulas
- * Exporting:: Sharing and publishing of notes
- * Publishing:: Create a web site of linked Org files
- * Miscellaneous:: All the rest which did not fit elsewhere
- * Extensions:: Add-ons for Org mode
- * Hacking:: How hack your way around
- * History and Acknowledgments:: How Org came into being
- * Main Index:: An index of Org's concepts and features
- * Key Index:: Key bindings and where they are described
- end detailmenu
- node Introduction, Document Structure, Top, Top
- cindex introduction
- end menu
- section Summary
- example
- bullet{} outline extension with visibility cycling and structure editing}
- bullet{} ASCII system and table editor for taking structured notes}
- bullet{} ASCII table editor with spreadsheet-like capabilities}
- bullet{} TODO list editor}
- bullet{} full agenda and planner with deadlines and work scheduling}
- bullet{} environment to implement David Allen's GTD system}
- bullet{} a basic database application}
- bullet{} simple hypertext system, with HTML and LaTeX export}
- bullet{} publishing tool to create a set of interlinked webpages}
- TeX{}. The structure
- editing and list creation capabilities can be used outside Org with
- the minor Orgstruct mode.
- uref{http://orgmode.org}.
- node Installation, Activation, Summary, Introduction
- cindex installation
- b{Important:}
- ref{Activation}.}
- If you have downloaded Org from the Web, either as a distribution
- file{.tar} file, or as a GIT archive, you must take the following steps
- to install it: Go into the unpacked Org distribution directory and edit the
- top section of the file
- file{emacs} or
- file{lisp} subdirectory to the
- Emacs load path. To do this, add the following line to
- example
- (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
- noindent
- If you plan to use code from the
- example
- (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
- b{XEmacs users now need to install the file
- file{xemacs} sub-directory of the Org distribution. Use the
- command:}
- b{make install-noutline}
- noindent Now byte-compile the Lisp files with the shell command:
- end example
- example
- make install
- make install-info
- noindent Then add to
- lisp
- ;; This line only if Org is not part of the X/Emacs distribution.
- (require 'org-install)
- node Activation, Feedback, Installation, Introduction
- cindex activation
- cindex global key bindings
- iftex
- i{If you use copy-and-paste to copy lisp code from the
- PDF documentation as viewed by some PDF viewers to your .emacs file, the
- single quote character comes out incorrectly and the code will not work.
- You need to fix the single quotes by hand, or copy from Info
- documentation.}
- file{.emacs} file. The last three lines
- define command{org-store-link},
- command{org-iswitchb} - please choose suitable
- keys yourself.
- end lisp
- Furthermore, you must activate
- lisp
- (global-font-lock-mode 1) ; for all buffers
- (add-hook 'org-mode-hook 'turn-on-font-lock) ; Org buffers only
- cindex Org mode, turning on
- With this setup, all files with extension
- example
- MY PROJECTS -*- mode: org; -*-
- noindent which will select Org mode for this buffer no matter what
- the file's name is. See also the variable
- code{transient-mark-mode} (
- lisp
- (transient-mark-mode 1)
- node Feedback, Conventions, Activation, Introduction
- cindex feedback
- cindex maintainer
- code{emacs-orgmodegnu.org}.
- If you are not a member of the mailing list, your mail will be reviewed by a
- moderator and then passed through to the list.
- For bug reports, please provide as much information as possible,
- including the version information of Emacs (
- key{RET}}) and Org (key{RET}}), as well as
- the Org related setup in
- enumerate
- item What did you expect to happen?
- end enumerate
- subsubheading How to create a useful backtrace
- emph{Backtrace}.
- This is information from the built-in debugger about where and how the
- error occurred. Here is how to produce a useful backtrace:
- item
- Start a fresh Emacs or XEmacs, and make sure that it will load the
- original Lisp code in
- file{org.elc}. The backtrace contains much more information if it is
- produced with uncompiled code. To do this, either rename
- file{org.el} by using the command line
- end example
- code{Options} menu and select
- code{Troubleshooting} sub-menu).
- item
- When you hit the error, a
- kbd{C-x C-w}) and
- attach it to your bug report.
- node Conventions, , Feedback, Introduction
- table
- item TODO
- item boss
- item Release
- end table
- chapter Document Structure
- cindex structure of document
- Org is based on outline mode and provides flexible commands to
- edit the structure of the document.
- end menu
- section Outlines
- cindex Outline mode
- Org is implemented on top of Outline mode. Outlines allow a
- document to be organized in a hierarchical structure, which (at least
- for me) is the best representation of notes and thoughts. An overview
- of this structure is achieved by folding (hiding) large parts of the
- document to show only the general document structure and the parts
- currently being worked on. Org greatly simplifies the use of
- outlines by compressing the entire show/hide functionality into a single
- command key{TAB} key.
- section Headlines
- cindex outline tree
- Headlines define the structure of an outline tree. The headlines in
- Org start with one or more stars, on the left margin
- code{org-special-ctrl-a/e} to configure special behavior
- of kbd{C-e} in headlines.}. For example:
- end example
- ref{Clean view} describes a setup to realize this.
- An empty line after the end of a subtree is considered part of it and
- will be hidden when the subtree is folded. However, if you leave at
- least two empty lines, one empty line will remain visible after folding
- the subtree, in order to structure the collapsed view. See the
- variable
- node Visibility cycling, Motion, Headlines, Document Structure
- cindex cycling, visibility
- cindex trees, visibility
- cindex hide text
- Outlines make it possible to hide parts of the text in the buffer.
- Org uses just two commands, bound to
- kbd{S-
- cindex subtree visibility states
- cindex folded, subtree visibility state
- cindex subtree, subtree visibility state
- kbd
- key{TAB}
- key{TAB}
- example
- ,-> FOLDED -> CHILDREN -> SUBTREE --.
- '-----------------------------------'
- footnote{see, however,
- the option
- key{TAB} actually runs global cycling (see below)
- code{org-cycle-global-at-bob}.}. Also when called with a prefix
- argument (key{TAB}}), global cycling is invoked.
- cindex global cycling
- cindex contents, global visibility state
- kindex S-
- item S-
- itemx C-u
- emph{Global cycling}: Rotate the entire buffer among the states
- end example
- When key{TAB}} is called with a numeric prefix argument N, the
- CONTENTS view up to headlines of level N will be shown. Note that inside
- tables, key{TAB}} jumps to the previous field.
- kindex C-u C-u C-u
- item C-u C-u C-u
- kindex C-c C-r
- pxref{Sparse trees}) or an agenda command
- (
- kindex C-c C-x b
- footnote{The indirect
- buffer
- pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
- ifnotinfo
- (see the Emacs manual for more information about indirect buffers)
- kbd{C-u} prefix, do not remove
- the previously used indirect buffer.
- code{org-startup-folded}, or on a
- per-file basis by adding one of the following lines anywhere in the
- buffer:
- end example
- samp{VISIBILITY} property (
- code{folded}, code{content}, and
- table
- kindex C-u C-u
- item C-u C-u
- samp{VISIBILITY} properties in individual
- entries.
- node Motion, Structure editing, Visibility cycling, Document Structure
- cindex motion, between headlines
- cindex headline navigation
- The following commands jump to other headlines in the buffer.
- kbd
- item C-c C-n
- Next heading.
- item C-c C-p
- Previous heading.
- item C-c C-f
- Next heading same level.
- item C-c C-b
- Previous heading same level.
- item C-c C-u
- Backward to higher level heading.
- item C-c C-j
- Jump to a different place without changing the current outline
- visibility. Shows the document structure in a temporary buffer, where
- you can use the following keys to find your destination:
- key{TAB}
- key{down} / r{Next/previous visible headline.}
- r{Select this location.}
- r{Do a Sparse-tree search}
- code{org-goto-auto-isearch}}
- n / p
- r{Next/previous headline same level.}
- u
- r{Digit argument.}
- q
- end example
- See also the variable
- end table
- section Structure editing
- cindex headline, promotion and demotion
- cindex demotion, of subtrees
- cindex pasting, of subtrees
- cindex copying, of subtrees
- table
- kindex M-
- item M-
- pxref{Plain lists}). To force
- creation of a new headline, use a prefix argument, or first press
- footnote{If you do not want the line to be split,
- customize the variable
- kindex C-
- item C-
- kbd{M-
- kindex M-S-
- item M-S-
- kindex C-S-
- item C-S-
- kbd{C-
- kindex M-
- item M-
- kindex M-
- item M-
- kindex M-S-
- item M-S-
- kindex M-S-
- item M-S-
- kindex M-S-
- item M-S-
- kindex M-S-
- item M-S-
- kindex C-c C-x C-w
- kindex C-c C-x M-w
- kindex C-c C-x C-y
- samp{****}.
- item C-y
- Depending on the variables
- code{org-yank-folded-subtrees}, Org's internal
- kbd{C-c
- C-x C-y}. With the default settings, level adjustment will take place and
- yanked trees will be folded unless doing so would swallow text previously
- visible. Any prefix argument to this command will force a normal
- kbd{C-u C-y}. If you use
- kindex C-c C-w
- xref{Refiling notes}.
- item C-c ^
- Sort same-level entries. When there is an active region, all entries in the
- region will be sorted. Otherwise the children of the current headline are
- sorted. The command prompts for the sorting method, which can be
- alphabetically, numerically, by time (using the first time stamp in each
- entry), by priority, or by TODO keyword (in the sequence the keywords have
- been defined in the setup). Reverse sorting is possible as well. You can
- also supply your own function to extract the sorting key. With a
- kbd{C-u C-u} prefixes,
- duplicate entries will also be removed.
- item C-x n s
- Narrow buffer to current subtree.
- item C-x n w
- Widen buffer to remove a narrowing.
- item C-c *
- Turn a normal line or plain list item into a headline (so that it
- becomes a subheading at its location). Also turn a headline into a
- normal line by removing the stars. If there is an active region, turn
- all lines in the region into headlines. Or, if the first line is a
- headline, remove the stars from all headlines in the region.
- cindex region, active
- cindex Transient mark mode
- When there is an active region (Transient mark mode), promotion and
- demotion work on all headlines in the region. To select a region of
- headlines, it is best to place both point and mark at the beginning of a
- line, mark at the beginning of the first headline, and point at the line
- just after the last headline to change. Note that when the cursor is
- inside a table (
- node Archiving, Sparse trees, Structure editing, Document Structure
- cindex archiving
- When a project represented by a (sub)tree is finished, you may want
- to move the tree out of the way and to stop it from contributing to the
- agenda. Org mode knows two ways of archiving. You can mark a tree with
- the ARCHIVE tag, or you can move an entire (sub)tree to a different
- location.
- end menu
- subsection The ARCHIVE tag
- pxref{Tags}) stays at
- its location in the outline tree, but behaves in the following way:
- minus
- pxref{Visibility cycling}). You can force cycling archived
- subtrees with key{TAB}}, or by setting the option
- code{show-all} will open archived subtrees.
- pxref{Sparse trees}), matches in
- archived subtrees are not exposed, unless you configure the option
- item
- During agenda view construction (
- code{org-agenda-skip-archived-trees}, in which case these trees will always
- be included. In the agenda you can press the
- item
- Archived trees are not exported (
- code{org-export-with-archived-trees}.
- table
- kindex C-c C-x a
- kindex C-u C-c C-x a
- emph{not} on a headline when this command is invoked, the
- level 1 trees will be checked.
- kbd{TAB}
- kbd{TAB}
- Cycle a tree even if it is tagged with ARCHIVE.
- node Moving subtrees, , ARCHIVE tag, Archiving
- cindex external archiving
- Once an entire project is finished, you may want to move it to a different
- location. Org can move it to an
- table
- kindex C-c C-x A
- emph{Archive Sibling}. This is a sibling of
- the entry with the heading samp{ARCHIVE}
- (
- kindex C-c C-x C-s
- code{org-archive-location}. Context information that could be
- lost like the file name, the category, inherited tags, and the TODO
- state will be store as properties in the entry.
- item C-u C-c C-x C-s
- Check if any direct children of the current headline could be moved to
- the archive. To do this, each subtree is checked for open TODO entries.
- If none are found, the command offers to move it to the archive
- location. If the cursor is
- end table
- file{_archive} to the
- current file name. For information and examples on how to change this,
- see the documentation string of the variable
- footnote{For backward compatibility,
- the following also works: If there are several such lines in a file,
- each specifies the archive location for the text below it. The first
- such line also applies to any text before its definition. However,
- using this method is
- example
- #+ARCHIVE: %s_done::
- noindent
- If you would like to have a special ARCHIVE location for a single entry
- or a (sub)tree, give the entry an
- pxref{Properties and Columns}).
- When a subtree is moved, it receives a number of special properties that
- record context information like the file from where the entry came, it's
- outline path the archiving time etc. Configure the variable
- node Sparse trees, Plain lists, Archiving, Document Structure
- cindex sparse trees
- cindex folding, sparse trees
- emph{sparse
- trees} for selected information in an outline tree, so that the entire
- document is folded as much as possible, but the selected information is made
- visible along with the headline structure above it
- code{org-show-hierarchy-above},
- code{org-show-siblings}, and
- table
- kindex C-c /
- kindex C-c / r
- footnote{depending on the option
- kbd{C-c C-c}.
- When called with a
- end table
- code{org-agenda-custom-commands} to define fast
- keyboard access to specific sparse trees. These commands will then be
- accessible through the agenda dispatcher (
- lisp
- (setq org-agenda-custom-commands
- '(("f" occur-tree "FIXME")))
- noindent will define the key
- samp{FIXME}.
- The other sparse tree commands select headings based on TODO keywords,
- tags, or properties and will be discussed later in this manual.
- cindex printing sparse trees
- code{ps-print-buffer-with-faces} which does not print invisible parts
- of the document
- kbd{C-c C-e v} to export only the visible
- part of the document and print the resulting file.
- section Plain lists
- cindex lists, plain
- cindex ordered lists
- Within an entry of the outline tree, hand-formatted lists can provide
- additional structure. They also provide a way to create lists of
- checkboxes (
- pxref{Exporting}) parses and formats them.
- Org knows ordered lists, unordered lists, and description lists.
- bullet
- emph{Unordered} list items start with samp{+}, or
- footnote{When using
- samp{*} is supported, it may be better to not use it for plain list items.}
- as bullets.
- emph{Ordered} list items start with a numeral followed by either a period or
- a right parenthesis, such as samp{1)}.
- emph{Description} list items are like unordered list items, but contain the
- separator emph{term} from the
- desciption.
- samp{10.}, then the
- 2--digit numbers must be written left-aligned with the other numbers in the
- list. Indentation also determines the end of a list item. It ends before
- the next line that is indented like the bullet/number, or less. Empty lines
- are part of the previous item, so you can have several paragraphs in one
- item. If you would like an empty line to terminate all currently open plain
- lists, configure the variable
- example
- b{Elijah Wood} :: He plays the Frodo
- -
- end group
- footnote{Org only changes the filling
- settings for Emacs. For XEmacs, you should use Kyle E. Jones'
- file{.emacs}:
- pxref{Exporting}).
- The following commands act on items when the cursor is in the first line
- of an item (the line with the bullet or number).
- kbd
- key{TAB}
- key{TAB}
- Items can be folded just like headline levels if you set the variable
- code{org-cycle-include-plain-lists} has not been set,
- kindex M-
- item M-
- pxref{Structure editing}). If this command is used in the middle
- of a line, the line is
- footnote{If you do not want the line to be split, customize the variable
- emph{whitespace before a bullet or number}, the new item is created
- kindex M-S-
- item M-S-
- pxref{Checkboxes}).
- key{up}
- key{down}
- key{up}
- key{down}
- Jump to the previous/next item in the current list.
- key{up}
- key{down}
- key{up}
- key{down}
- Move the item including subitems up/down (swap with previous/next item
- of same indentation). If the list is ordered, renumbering is
- automatic.
- key{left}
- key{right}
- key{left}
- key{right}
- Decrease/increase the indentation of the item, including subitems.
- Initially, the item tree is selected based on current indentation.
- When these commands are executed several times in direct succession,
- the initially selected region is used, even if the new indentation
- would imply a different hierarchy. To use the new hierarchy, break
- the command chain with a cursor motion or so.
- item C-c C-c
- If there is a checkbox (
- kindex C-c -
- samp{-}, samp{*}, samp{1)}). With a numeric prefix
- argument N, select the Nth bullet from this list. If there is an active
- region when calling this, all lines will be converted to list items. If the
- first line already was a list item, any item markers will be removed from the
- list. Finally, even without an active region, a normal line will be
- converted into a list item.
- key{left}
- key{right}
- key{left}/
- end table
- section Drawers
- cindex visibility cycling, drawers
- Sometimes you want to keep information associated with an entry, but you
- normally don't want to see it. For this, Org mode has
- code{org-drawers}
- code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
- look like this:
- end example
- Visibility cycling (
- key{TAB} there. Org mode uses a drawer for
- storing properties (
- pxref{Clocking work time}).
- section Footnotes
- file{footnote.el} package, Org-mode's footnotes are designed for work on a
- larger document, not only for one-off documents like emails. The basic
- syntax is similar to the one used by
- example
- The Org homepage[fn:1] now looks a lot better than it used to.
- ...
- [fn:1] The link is: http://orgmode.org
- emph{named} footnotes and
- optional inline definition. Using plain numbers as markers (as
- pxref{Embedded
- LaTeX}. Here are the valid references:
- code
- item [fn:name]
- A named footnote reference, where
- item [fn:: This is the inline definition of this footnote]
- A LaTeX-like anonymous footnote where the definition is given directly at the
- reference point.
- code{[fn:name]} to create additional references.
- code{org-footnote-auto-label} and its
- corresponding
- noindent The following command handles footnotes:
- kbd
- item C-c C-x f
- The footnote action command.
- When the cursor is on a footnote reference, jump to the definition. When it
- is at a definition, jump to the (first) reference.
- Otherwise, create a new footnote. Depending on the variable
- footnote{The corresponding in-buffer
- setting is: code{#+STARTUP: nofninline}}, the
- definition will be placed right into the text as part of the reference, or
- separately into the location determined by the variable
- example
- s
- r{Org makes no effort to sort footnote definitions into a particular}
-
- r{also move entries according to
- r{Normalize the footnotes by collecting all definitions (including}
-
- r{in sequence. The references will then also be numbers. This is}
-
- r{off an email). The exporters do this automatically, and so could}
- code{message-send-hook}.}
- d
- r{to it.}
- kindex C-c C-c
- kbd{C-c C-x f}.
- kindex mouse-1
- item C-c C-c
- end table
- section The Orgstruct minor mode
- cindex minor mode for structure editing
- If you like the intuitive way the Org mode structure editing and list
- formatting works, you might want to use these commands in other modes
- like Text mode or Mail mode as well. The minor mode Orgstruct mode
- makes this possible. You can always toggle the mode with
- lisp
- (add-hook 'mail-mode-hook 'turn-on-orgstruct)
- node Tables, Hyperlinks, Document Structure, Top
- cindex tables
- file{calc}
- package
- pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
- ifnotinfo
- (see the Emacs Calculator manual for more information about the Emacs
- calculator).
- menu
- * Built-in table editor:: Simple tables
- * Narrow columns:: Stop wasting space in tables
- * Column groups:: Grouping to trigger vertical lines
- * Orgtbl mode:: The table editor as minor mode
- * The spreadsheet:: The table editor has spreadsheet capabilities
- * Org Plot:: Plotting from org tables
- node Built-in table editor, Narrow columns, Tables, Tables
- cindex table editor, built-in
- Org makes it easy to format tables in plain ASCII. Any line with
- samp{|} is also the column separator. A table might look like
- this:
- end example
- A table is re-aligned automatically each time you press
- key{RET} or key{TAB} also moves to
- the next field (
- samp{|-} is considered as a horizontal separator line and will be
- expanded on the next re-align to span the whole table width. So, to
- create the above table, you would only type
- end example
- key{TAB} to align the table and start filling in
- fields.
- When typing text into a field, Org treats
- key{Backspace}, and all character keys in a special way, so that
- inserting and deleting avoids shifting other fields. Also, when
- typing
- kbd{kbd{S-kbd{
- code{org-enable-table-editor} and
- table
- tsubheading{Creation and conversion}
- item C-c |
- Convert the active region to table. If every line contains at least one
- TAB character, the function assumes that the material is tab separated.
- If every line contains a comma, comma-separated values (CSV) are assumed.
- If not, lines are split at whitespace into fields. You can use a prefix
- argument to force a specific separator: kbd{C-u
- C-u} forces TAB, and a numeric argument N indicates that at least N
- consecutive spaces, or alternatively a TAB will be the separator.
- kbd{|Name|Phone|Age key{TAB}}.
- kindex C-c C-c
- c
- key{TAB}
- key{TAB}
- Re-align the table, move to the next field. Creates a new row if
- necessary.
- kindex S-
- item S-
- c
- key{RET}
- key{RET}
- Re-align the table and move down to next row. Creates a new row if
- necessary. At the beginning or end of a line,
- tsubheading{Column and row editing}
- key{left}
- key{right}
- key{left}
- key{right}
- Move the current column left/right.
- kindex M-S-
- item M-S-
- c
- key{right}
- key{right}
- Insert a new column to the left of the cursor position.
- kindex M-
- kindex M-
- item M-
- itemx M-
- c
- key{up}
- key{up}
- Kill the current row or horizontal line.
- kindex M-S-
- item M-S-
- c
- item C-c -
- Insert a horizontal line below current row. With a prefix argument, the line
- is created above the current line.
- kindex C-c ^
- tsubheading{Regions}
- item C-c C-x M-w
- Copy a rectangular region from a table to a special clipboard. Point
- and mark determine edge fields of the rectangle. The process ignores
- horizontal separator lines.
- kindex C-c C-x C-w
- c
- item C-c C-x C-y
- Paste a rectangular region into a table.
- The upper left corner ends up in the current field. All involved fields
- will be overwritten. If the rectangle does not fit into the present table,
- the table is enlarged as needed. The process ignores horizontal separator
- lines.
- kindex C-c C-q
- key{RET}
- itemx M-
- tsubheading{Calculations}
- cindex calculations, in tables
- cindex active region
- kindex C-c +
- kbd{C-y}.
- kindex S-
- item S-
- code{org-table-copy-increment}, integer field
- values will be incremented during copy. Integers that are too large will not
- be incremented. Also, a
- pxref{Cooperation}).
- kindex C-c `
- pxref{Narrow columns}). When called with a
- c
- item C-c |
- Tables can also be imported by pasting tabular text into the Org
- buffer, selecting the pasted text with
- kbd{C-c |} command (see above under
- c
- code{org-table-export-default-format}. You may also use properties
- code{TABLE_EXPORT_FORMAT} to specify the file
- name and the format for table export in a subtree. Org supports quite
- general formats for exported tables. The exporter format is the same as the
- format used by Orgtbl radio tables, see
- end table
- If you don't like the automatic table editor because it gets in your
- way on lines which you would like to start with
- lisp
- (setq org-enable-table-editor nil)
- noindent Then the only table command that still works is
- node Narrow columns, Column groups, Built-in table editor, Tables
- cindex narrow columns in tables
- The width of columns is automatically determined by the table editor.
- Sometimes a single field or a few fields need to carry more text,
- leading to inconveniently wide columns. To limit
- samp{<N>} where
- example
- end group
- noindent
- Fields that are wider become clipped and end in the string
- kbd{C-c `} (that is
- kbd{C-c
- C-c}.
- When visiting a file containing a table with narrowed columns, the
- necessary character hiding has not yet happened, and the table needs to
- be aligned before it looks nice. Setting the option
- example
- #+STARTUP: align
- #+STARTUP: noalign
- node Column groups, Orgtbl mode, Narrow columns, Tables
- cindex grouping columns in tables
- When Org exports tables, it does so by default without vertical
- lines because that is visually more satisfying in general. Occasionally
- however, vertical lines can be useful to structure a table into groups
- of columns, much like horizontal lines can do for groups of rows. In
- order to specify column groups, you can use a special row where the
- first field contains only
- samp{<} to indicate that this column should start a group,
- samp{<>} to make a column
- a group of its own. Boundaries between column groups will upon export be
- marked with vertical lines. Here is an example:
- end example
- It is also sufficient to just insert the column group starters after
- every vertical line you'd like to have:
- end example
- section The Orgtbl minor mode
- cindex minor mode for tables
- If you like the intuitive way the Org table editor works, you
- might also want to use it in other modes like Text mode or Mail mode.
- The minor mode Orgtbl mode makes this possible. You can always toggle
- the mode with
- lisp
- (add-hook 'mail-mode-hook 'turn-on-orgtbl)
- TeX{} tables with the underlying ease and power of
- Orgtbl mode, including spreadsheet capabilities. For details, see
- node The spreadsheet, Org Plot, Orgtbl mode, Tables
- cindex calculations, in tables
- cindex
- file{calc} package to implement
- spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
- derive fields from other fields. While fully featured, Org's
- implementation is not identical to other spreadsheets. For example,
- Org knows the concept of a
- menu
- * References:: How to refer to another field or range
- * Formula syntax for Calc:: Using Calc to compute stuff
- * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
- * Field formulas:: Formulas valid for a single field
- * Column formulas:: Formulas valid for an entire column
- * Editing and debugging formulas:: Fixing formulas
- * Updating the table:: Recomputing all dependent fields
- * Advanced features:: Field names, parameters and automatic recalc
- node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
- cindex references
- To compute fields in the table from other fields, formulas must
- reference other fields or ranges. In Org, fields can be referenced
- by name, by absolute coordinates, and by relative coordinates. To find
- out what the coordinates of a field are, press
- kbd{C-c
- subsubheading Field references
- cindex references, to fields
- Formulas can reference the value of another field in two ways. Like in
- any other spreadsheet, you may reference fields with a letter/number
- combination like
- c Such references are always fixed to that field, they don't change
- c Org's code{$B$3} in other spreadsheets.
- example
- row$column
- noindent
- Column references can be absolute like samp{2},...
- samp{+1} or
- samp{1}...
- samp{+3} or
- samp{I} refers to the first hline
- emph{separate} table lines. If the table
- starts with a hline above the header, it does not count.},
- samp{-I} refers to the first such line above the
- current line,
- samp{III+2} which is the second data line after the
- third hline in the table. Relative row numbers like
- samp{0} refers to the current row and column. Also, if you omit
- either the column or the row part of the reference, the current
- row/column is implied.
- Org's references with
- emph{signed} numbers are floating
- references because the same reference operator can reference different
- fields depending on the field being calculated by the formula.
- As a special case references like samp{$LR12} can be used to
- refer in a stable way to the 5th and 12th field in the last row of the
- table.
- Here are a few examples:
- r{2nd row, 3rd column}
- C2
- r{column 5 in the current row}
- E&
- r{current column, row 2}
- -1$-3
- r{field just under hline above current row, column 2}
- subsubheading Range references
- cindex references, to ranges
- You may reference a rectangular range of fields by specifying two field
- references connected by two dots
- samp{$2..$7}, but if at least one field
- is in a different row, you need to use the general
- samp{} in order to be interpreted correctly). Examples:
- r{First three fields in the current row.}
- $P..$Q
- r{6 fields between these two fields.}
- A2..C4
- r{3 numbers from the column to the left, 2 up to current row}
- noindent Range references return a vector of values that can be fed
- into Calc vector functions. Empty fields in ranges are normally
- suppressed, so that the vector contains only the non-empty fields (but
- see the
- samp{[0]} is returned to avoid syntax errors in formulas.
- cindex named references
- cindex name, of column or field
- samp{$name} is interpreted as the name of a column, parameter or
- constant. Constants are defined globally through the variable
- example
- #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
- noindent
- Also properties (
- samp{:Xyz:} use the name
- file{constants.el} package, it will also be used to resolve constants,
- including natural constants like
- samp{$km} for kilometersfile{Constant.el} can
- supply the values of constants in two different unit systems,
- code{cgs}. Which one is used depends on the value of the variable
- code{#+STARTUP} options
- code{constcgs} to set this value for the current
- buffer.}. Column names and parameters can be specified in special table
- lines. These are described below, see
- node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
- cindex formula syntax, Calc
- file{Calc} package. file{calc} has the
- non-standard convention that
- samp{*}, so that samp{a/(b*c)}.} Before
- evaluation by pxref{Calling Calc from
- Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
- Emacs Calc Manual}),
- cindex vectors, in table calculations
- The range vectors can be directly fed into the Calc vector functions
- like samp{vsum}.
- cindex mode, for
- code{(float 5)} to keep tables
- compact. The default settings can be configured using the variable
- example
- p20
- r{normal, scientific, engineering, or fixed display format}
- D R
- r{fraction and symbolic modes}
- N
- r{force text interpretation}
- E
- end example
- code{printf} format specifier to
- reformat the final result. A few examples:
- r{Sum of first and second field}
- $1+$2;%.2f
- r{Math functions can be used}
- $0;%.1f
- r{Degrees F -> C conversion}
- $c/$1/$cm file{constants.el}}
- tan($1);Dp3s1
- r{Same, but use printf specifier for display}
- vmean($2..$7)
- r{Same, but treat empty fields as 0}
- taylor($3,x=7,2)
- end example
- Calc also contains a complete set of logical operations. For example
- r{``teen'' if age $1 less than 20, else empty}
- node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
- cindex Lisp forms, as table formulas
- It is also possible to write a formula in Emacs Lisp; this can be useful
- for string manipulation and control structures, if the Calc's
- functionality is not enough. If a formula starts with a single quote
- followed by an opening parenthesis, then it is evaluated as a lisp form.
- The evaluation should return either a string or a number. Just as with
- samp{N} mode switch, all
- referenced elements will be numbers (non-number fields will be zero) and
- interpolated as Lisp numbers, without quotes. If you provide the
- code{"$3"}. Ranges are inserted as space-separated fields, so you can
- embed them in list or vector syntax. A few examples, note how the
- example
- r{Add columns 1 and 2, equivalent to the Calc's
- r{Compute the sum of columns 1-4, like Calc's
- end example
- subsection Field formulas
- cindex formula, for individual table field
- To assign a formula to a particular field, type it directly into the
- field, preceded by samp{:=$1+$2}. When you
- press key{RET} or
- samp{#+TBLFM:}
- directly below the table. If you typed the equation in the 4th field of
- the 3rd data line in the table, the formula will look like
- i{absolute references} (but not relative
- ones) in stored formulas are modified in order to still reference the
- same field. Of cause this is not true if you edit the table structure
- with normal editing commands - then you must fix the equations yourself.
- The left hand side of a formula may also be a named field (
- samp{$LR3}.
- Instead of typing an equation into the field, you may also use the
- following command
- kbd
- item C-u C-c =
- Install a new formula for the current field. The command prompts for a
- formula, with default taken from the
- end table
- subsection Column formulas
- cindex formula, for table column
- Often in a table, the same formula should be used for all fields in a
- particular column. Instead of having to copy the formula to all fields
- in that column, Org allows to assign a single formula to an entire
- column. If the table contains horizontal separator hlines, everything
- before the first such line is considered part of the table
- samp{=$1+$2}. When you press
- key{RET} or
- samp{=}, the previously stored formula for this column is
- used. For each column, Org will only remember the most recently
- used formula. In the
- samp{$4=$1+$2}.
- Instead of typing an equation into the field, you may also use the
- following command:
- kbd
- item C-c =
- Install a new formula for the current column and replace current field with
- the result of the formula. The command prompts for a formula, with default
- taken from the
- kbd{C-5 C-c =}) the command
- will apply it to that many consecutive fields in the current column.
- node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
- cindex formula editing
- code{B3} or
- code{3$2} or
- code{org-table-use-standard-references}.
- kbd
- kindex C-u C-c =
- itemx C-u C-c =
- Edit the formula associated with the current column/field in the
- minibuffer. See ref{Field formulas}.
- item C-u C-u C-c =
- Re-insert the active formula (either a
- field formula, or a column formula) into the current field, so that you
- can edit it directly in the field. The advantage over editing in the
- minibuffer is that you can use the command
- kindex C-c ?
- kindex C-c
- item C-c
- kbd{C-c C-c}.
- {
- {
- Toggle the formula debugger on and off. See below.
- item C-c '
- Edit all formulas for the current table in a special buffer, where the
- formulas will be displayed one per line. If the current field has an
- active formula, the cursor in the formula editor will mark it.
- While inside the special buffer, Org will automatically highlight
- any field or range reference at the cursor position. You may edit,
- remove and add formulas, and use the following commands:
- kbd
- kindex C-x C-s
- itemx C-x C-s
- Exit the formula editor and store the modified formulas. With
- kindex C-c C-q
- kindex C-c C-r
- code{B3}) and internal (like
- kindex
- item
- key{TAB} collapses the formula back again. In the open
- formula,
- kindex M-
- item M-
- kindex S-
- kindex S-
- kindex S-
- kindex S-
- item S-key{down}/key{right}
- Shift the reference at point. For example, if the reference is
- kbd{S-code{C3}.
- This also works for relative references, and for hline references.
- key{up}
- key{down}
- key{up}/
- kindex M-
- kindex M-
- item M-key{down}
- Scroll the window displaying the table.
- }
- }
- Turn the coordinate grid in the table on and off.
- end table
- Making a table field blank does not remove the formula associated with
- the field, because that is stored in a different line (the
- samp{#+TBLFM} line.
- samp{#+TBLFM} directly and re-apply the changed
- equations with
- subsubheading Debugging formulas
- cindex debugging, of table formulas
- When the evaluation of a formula leads to an error, the field content
- becomes the string
- code{Tbl} menu and repeat the
- calculation, for example by pressing key{RET}} in a
- field. Detailed information will be displayed.
- subsection Updating the table
- cindex updating, table
- Recalculation of a table is normally not automatic, but needs to be
- triggered by a command. See
- table
- kindex C-c *
- c
- item C-u C-c *
- itemx C-u C-c C-c
- Recompute the entire table, line by line. Any lines before the first
- hline are left alone, assuming that these are part of the table header.
- kindex C-u C-u C-c *
- item C-u C-u C-c *
- i{later} in the calculation sequence.
- node Advanced features, , Updating the table, The spreadsheet
- i{names} to fields and columns, you need
- to reserve the first column of the table for special marking characters.
- kbd
- item C-#
- Rotate the calculation mark in first column through the states
- samp{#}, samp{!},
- end table
- Here is an example of a table that collects exam results of students and
- makes use of these features:
- group
- |---+---------+--------+--------+--------+-------+------|
- | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
- |---+---------+--------+--------+--------+-------+------|
- | ! | | P1 | P2 | P3 | Tot | |
- | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
- | ^ | | m1 | m2 | m3 | mt | |
- |---+---------+--------+--------+--------+-------+------|
- | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
- | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
- |---+---------+--------+--------+--------+-------+------|
- | | Average | | | | 29.7 | |
- | ^ | | | | | at | |
- | $ | max=50 | | | | | |
- |---+---------+--------+--------+--------+-------+------|
- #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(-II..-I);%.1f
- end example
- b{Important}: Please note that for these special tables,
- recalculating the table with
- samp{#} or
- cindex marking characters, tables
- The marking characters have the following meaning:
- samp
- samp{$Tot} instead of
- item ^
- This row defines names for the fields
- samp{$m1} to refer to
- the value
- samp{$name=...}.
- samp{^}, but defines names for the fields in the row
- item $
- Fields in this row can define
- samp{$} row contains
- samp{$max}.
- Parameters work exactly like constants, only that they can be defined on
- a per-table basis.
- key{TAB} or kbd{S-
- kbd{C-u C-c *}. Unmarked
- lines will be left alone by this command.
- kbd{C-u C-c *}, but
- not for automatic recalculation. Use this when automatic
- recalculation slows down editing too much.
- kbd{C-u C-c *}.
- All lines that should be recalculated should be marked with
- samp{*}.
- samp{<N>} markers.
- file{calc} package, here is a table that computes the Taylor
- series of degree code{x} for a couple of
- functions.
- group
- |---+-------------+---+-----+--------------------------------------|
- | | Func | n | x | Result |
- |---+-------------+---+-----+--------------------------------------|
- | # | exp(x) | 1 | x | 1 + x |
- | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
- | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
- | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
- | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
- | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
- |---+-------------+---+-----+--------------------------------------|
- #+TBLFM: $5=taylor($2,$4,$3);n3
- end example
- node Org Plot, , The spreadsheet, Tables
- cindex graph, in tables
- file{Gnuplot} file{gnuplot-mode}
- code{org-plot/gnuplot} on the following table.
- group
- #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
- | Sede | Max cites | H-index |
- |-----------+-----------+---------|
- | Chile | 257.72 | 21.39 |
- | Leeds | 165.77 | 19.68 |
- | Sao Paolo | 71.00 | 11.50 |
- | Stockholm | 134.19 | 14.33 |
- | Morelia | 257.56 | 17.67 |
- end example
- Notice that Org Plot is smart enough to apply the tables headers as labels.
- Further control over the labels, type, content, and appearance of plots can
- be exercised through the
- uref{http://legito.org/worg/org-tutorials/org-plot.php}.
- table
- item set
- Specify any
- item title
- Specify the title of the plot.
- code{x} axis.
- code{dep:(3 4)} to graph the third and
- fourth columns (defaults to graphing all other columns aside from the ind
- column).
- code{2d}, code{grid}.
- code{with} option to be inserted for every col being plotted
- (e.g. code{points}, code{impulses}, etc...).
- Defaults to 'lines'.
- code{"path/to/desired/output-file"}.
- item line
- Specify an entire line to be inserted in the gnuplot script.
- code{3d} or code{t} to graph a
- flat mapping rather than a
- item timefmt
- Specify format of org-mode timestamps as they will be parsed by gnuplot.
- Defaults to '%Y-%m-%d-%H:%M:%S'.
- code{$datafile} in the specified script will be replaced with
- the path to the generated data file. Note even if you set this option you
- may still want to specify the plot type, as that can impact the content of
- the data file.
- node Hyperlinks, TODO Items, Tables, Top
- cindex hyperlinks
- Like HTML, Org provides links inside a file, external links to
- other files, Usenet articles, emails, and much more.
- end menu
- section Link format
- cindex format, of links
- Org will recognize plain URL-like links and activate them as
- clickable links. The general link format, however, looks like this:
- r{or alternatively} [[link]]
- samp{description} is displayed instead
- of samp{link} is displayed instead of
- code{org-link},
- which by default is an underlined face. You can directly edit the
- visible part of a link. Note that this can be either the
- samp{description} part. To
- edit also the invisible kbd{C-c C-l} with the
- cursor on the link.
- If you place the cursor at the beginning or just behind the end of the
- displayed text and press
- code{Org->Hyperlinks->Literal links}.
- section Internal links
- cindex links, internal
- samp{[[My Target]]} or
- kbd{C-c C-o} when the cursor is on the
- link, or with a mouse click (
- example
- # <<My Target>>
- noindent In HTML export (
- samp{http} links
- samp{my target}.
- Links starting with a star like
- samp{[[*My Targets]]} will find any of the following:
- end example
- To insert a link targeting a headline, in-buffer completion can be used.
- Just type a star followed by a few optional letters into the buffer and
- press key{TAB}}. All headlines in the current buffer will be
- offered as completions.
- kbd{C-c &}. Using this command
- several times in direct succession goes back to positions recorded
- earlier.
- end menu
- subsection Radio targets
- cindex targets, radio
- samp{<<<My
- Target>>>} causes each occurrence of
- kbd{C-c C-c} with the
- cursor on or at a target.
- section External links
- cindex external links
- cindex Gnus links
- cindex IRC links
- cindex file links
- cindex RMAIL links
- cindex MH-E links
- cindex SHELL links
- cindex elisp links
- Org supports links to files, websites, Usenet and email messages,
- BBDB database entries and links to both IRC conversations and their
- logs. External links are URL-like locators. They start with a short
- identifying string followed by a colon. There can be no space after
- the colon. The following list shows examples for each link type.
- r{on the web}
- file:/home/dominik/images/jupiter.jpg
- r{same as above}
- file:papers/last.pdf
- r{same as above}
- news:comp.emacs
- r{Mail link}
- vm:folder
- r{VM message link}
- vm://myselfsome.where.org/folder#id
- r{WANDERLUST folder link}
- wl:folder#id
- r{MH-E folder link}
- mhe:folder#id
- r{RMAIL folder link}
- rmail:folder#id
- r{Gnus group link}
- gnus:group#id
- r{BBDB link (with regexp)}
- irc:/irc.com/#emacs/bob
- r{A shell command}
- elisp:org-agenda
- r{Elisp form to evaluate}
- pxref{Link
- format}), for example:
- end example
- pxref{HTML export}) will inline the image as a clickable
- button. If there is no description at all and the link points to an
- image,
- that image will be inlined into the exported HTML file.
- cindex plain text external links
- Org also finds external links in the normal text and activates them
- as links. If spaces must be part of the link (for example in
- node Handling links, Using links outside Org, External links, Hyperlinks
- cindex links, handling
- Org provides methods to create a link in the correct syntax, to
- insert it into an Org file, and to follow the link.
- kbd
- cindex storing links
- emph{global} command which
- can be used in any buffer to create a link. The link will be stored for
- later insertion into an Org buffer (see below). For Org files, if there is a
- file{org-id.el} is
- loaded, by ID property. For VM, Rmail, Wanderlust, MH-E, Gnus and BBDB
- buffers, the link will indicate the current article/entry. For W3 and W3M
- buffers, the link goes to the current URL. For IRC links, if you set the
- variable kbd{C-c l} will store a
- samp{irc:/} style link to the user/channel/server
- under the point will be stored. For any other files, the link will point to
- the file, with a search string (
- ref{Custom searches}. The key binding
- ref{Installation}.
- kindex C-c C-l
- cindex completion, of links
- item C-c C-l
- Insert a link. This prompts for a link to be inserted into the buffer. You
- can just type a link, using text for an internal link, or one of the link
- type prefixes mentioned in the examples above. All links stored during the
- current session are part of the history for this prompt, so you can access
- them with key{down} (or
- samp{http:} or
- pxref{Link abbreviations}). The link will be inserted into the
- buffer
- kbd{C-u} prefix argument to
- code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
- If some text was selected when this command is called, the selected text
- becomes the default description.
- c
- samp{file:} link and
- c a subdirectory of it, the path of the file will be inserted relative to
- c
- cindex file name completion
- item C-u C-c C-l
- When kbd{C-u} prefix argument, a link to
- a file will be inserted and you may use file name completion to select
- the name of the file. The path to the file is inserted relative to the
- directory of the current org file, if the linked file is in the current
- directory or in a sub-directory of it, or if the path is written relative
- to the current directory using
- samp{~/} for your home directory. You can
- force an absolute path with two
- c
- r{(with cursor on existing link)}
- When the cursor is on an existing link,
- c
- kindex C-c C-o
- command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
- the corresponding links, and execute the command in a shell link. When the
- cursor is on an internal link, this commands runs the corresponding search.
- When the cursor is on a TAG list in a headline, it creates the corresponding
- TAGS view. If the cursor is on a time stamp, it compiles the agenda for that
- date. Furthermore, it will visit text and remote files in
- code{org-file-apps}. If you want to override the default application and
- visit the file with Emacs, use a
- kbd{C-u C-u} prefix.
- kindex mouse-2
- item mouse-2
- kbd{mouse-2} will open the link just as
- kbd{mouse-1} will follow a link.
- kindex mouse-3
- kbd{mouse-2}, but force file links to be opened with Emacs, and
- internal links to be displayed in another window
- code{org-display-internal-link-with-indirect-buffer}}.
- cindex mark ring
- item C-c %
- Push the current position onto the mark ring, to be able to return
- easily. Commands following an internal link do this automatically.
- cindex links, returning to
- item C-c &
- Jump back to a recorded position. A position is recorded by the
- commands following internal links, and by
- c
- kindex C-c C-x C-p
- item C-c C-x C-n
- kbd{C-n} and
- lisp
- (add-hook 'org-load-hook
- (lambda ()
- (define-key 'org-mode-map "\C-n" 'org-next-link)
- (define-key 'org-mode-map "\C-p" 'org-previous-link)))
- end table
- section Using links outside Org
- You can insert and follow links that have Org syntax not only in
- Org, but in any Emacs buffer. For this, you should create two
- global commands, like this (please select suitable global keys
- yourself):
- end lisp
- section Link abbreviations
- cindex abbreviation, links
- Long URLs can be cumbersome to type, and often many similar links are
- needed in a document. For this you can use link abbreviations. An
- abbreviated link looks like this
- end example
- code{org-link-abbrev-alist} that
- relates the linkwords to replacement text. Here is an example:
- group
- (setq org-link-abbrev-alist
- '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
- ("google" . "http://www.google.com/search?q=")
- ("ads" . "http://adsabs.harvard.edu/cgi-bin/
- nph-abs_connect?author=%s&db_key=AST")))
- end lisp
- If the replacement text contains the string
- code{[[bugzilla:129]]}, search the web for
- code{[[google:OrgMode]]} and find out what the Org author is
- doing besides Emacs hacking with
- example
- #+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
- #+LINK: google http://www.google.com/search?q=%s
- noindent
- In-buffer completion samp{[} to
- complete link abbreviations.
- section Search options in file links
- cindex file links, searching
- File links can contain additional information to make Emacs jump to a
- particular location in the file when following a link. This can be a
- line number or a search option after a double
- kbd{C-c l} creates a link (
- kbd{C-c C-o}.
- Here is the syntax of the different ways to attach a search to a file
- link, together with an explanation:
- end example
- code
- item My Target
- Search for a link target
- samp{my target}, similar to the search in internal links, see
- pxref{HTML export}), such a file
- link will become an HTML reference to the corresponding named anchor in
- the linked file.
- item /regexp/
- Do a regular expression search for
- code{occur} to list all matches in a separate window. If the
- target file is in Org mode,
- c If the target file is a directory,
- code{grep} will be used to search all files in the directory.
- code{[[file:::find me]]} does
- a search for
- samp{[[find me]]} would.
- section Custom Searches
- cindex search strings, custom
- The default mechanism for creating search strings and for doing the
- actual search related to a file link may not work correctly in all
- cases. For example, BibTeX database files have many entries like
- code{add-hook}, these functions need
- to be added to the hook variables
- code{org-execute-file-search-functions}. See the docstring for these
- variables for more information. Org actually uses this mechanism
- for Bib
- file{org-bibtex.el}.
- chapter TODO Items
- footnote{Of
- course, you can make a document that contains inly long lists of TODO items,
- but this is not required.}. Instead, TODO items are an integral part of the
- notes file, because TODO items usually come up while taking notes! With Org
- mode, simply mark any entry in a tree as being a TODO item. In this way,
- information is not duplicated, and the entire context from which the TODO
- item emerged is always present.
- Of course, this technique for managing TODO items scatters them
- throughout your notes file. Org mode compensates for this by providing
- methods to give you an overview of all the things that you have to do.
- end menu
- section Basic TODO functionality
- Any headline becomes a TODO item when it starts with the word
- example
- *** TODO Write letter to Sam Fortune
- noindent
- The most important commands to work with TODO entries are:
- kbd
- cindex cycling, of TODO states
- example
- ,-> (unmarked) -> TODO -> DONE --.
- '--------------------------------'
- kbd{t} command key (
- kindex C-u C-c C-t
- ref{Per-file keywords} and
- kindex S-
- kindex S-
- item S-
- itemx S-
- pxref{TODO
- extensions}).
- kindex C-c / t
- item C-c C-v
- emph{sparse tree} (
- code{KWD1|KWD2|...}. With numeric prefix argument N, show the tree for the
- Nth keyword in the variable
- kindex C-c a t
- pxref{Agenda Views}) into a single buffer. The new buffer will
- be in
- pxref{Agenda
- commands}).
- kindex S-M-
- item S-M-
- end table
- code{org-todo-state-tags-triggers} for details.
- section Extended use of TODO keywords
- emph{TODO keywords} (stored in
- i{tags} are another way to classify headlines in general and
- TODO items in particular (
- menu
- * Workflow states:: From TODO to DONE in steps
- * TODO types:: I do this, Fred does the rest
- * Multiple sets in one file:: Mixing it all, and still finding your way
- * Fast access to TODO states:: Single letter selection of a state
- * Per-file keywords:: Different files, different requirements
- * Faces for TODO keywords:: Highlighting states
- node Workflow states, TODO types, TODO extensions, TODO extensions
- cindex TODO workflow
- emph{sequential} states
- in the process of working on an item, for example
- lisp
- (setq org-todo-keywords
- '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
- emph{need
- action}) from the DONE states (which need
- cindex completion, of TODO keywords
- With this setup, the command
- kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
- Or you can use
- pxref{Completion}) or even a special one-key selection scheme
- (
- ref{Tracking TODO state changes} for more information.
- subsection TODO keywords as types
- cindex names as TODO keywords
- emph{types} of action items. For example, you might want to indicate
- that items are for ``work'' or ``home''. Or, when you work with several
- people on a single project, you might want to assign action items
- directly to persons, by using their names as TODO keywords. This would
- be set up like this:
- end lisp
- In this case, different keywords do not indicate a sequence, but rather
- different types. So the normal work flow would be to assign a task to a
- person, and later to mark it DONE. Org mode supports this style by adapting
- the workings of the command footnote{This is also true for the
- kbd{C-c C-t} again, it will switch from any name directly
- to DONE. Use prefix arguments or completion to quickly select a specific
- name. You can also review the items of a specific TODO type in a sparse tree
- by using a numeric prefix to
- kbd{C-3 C-c C-v}. To collect Lucy's items
- from all agenda files into a single buffer, you would use the numeric prefix
- argument as well when creating the global TODO list:
- node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
- cindex TODO keyword sets
- Sometimes you may want to use different sets of TODO keywords in
- parallel. For example, you may want to have the basic
- code{DONE}, but also a workflow for bug fixing, and a
- separate state indicating that an item has been canceled (so it is not
- DONE, but also does not require action). Your setup would then look
- like this:
- end lisp
- The keywords should all be different, this helps Org mode to keep track
- of which subsequence should be used for a given entry. In this setup,
- code{DONE} to (nothing) to code{FIXED} to
- (nothing) to
- table
- kindex C-S-
- kindex C-S-
- item C-S-
- itemx C-S-
- kbd{C-S-code{TODO} or
- code{REPORT}, and any of the words in the second row to
- kindex S-
- kindex S-
- item S-
- itemx S-
- kbd{S-kbd{S-
- emph{all} keywords from all sets, so for example key{<right>}}
- would switch from code{REPORT} in the example above.
- node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
- lisp
- (setq org-todo-keywords
- '((sequence "TODO(t)" "|" "DONE(d)")
- (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
- (sequence "|" "CANCELED(c)")))
- code{C-u C-c C-t} followed by the selection key, the
- entry will be switched to this state.
- code{org-use-fast-todo-selection} to
- code{org-fast-tag-selection-include-todo}, it allows to change the TODO
- state through the tags interface (
- node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
- cindex keyword options
- example
- #+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
- example
- #+TYP_TODO: Fred Sara Lucy Mike | DONE
- example
- #+SEQ_TODO: TODO | DONE
- #+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED
- #+SEQ_TODO: | CANCELED
- cindex completion, of option keywords
- key{TAB}
- samp{#+} into the buffer and then use key{TAB}} completion.
- kbd{C-c C-c} with the cursor still in the line to make the changes
- known to Org mode
- kbd{C-c C-c} with the
- cursor in a line starting with
- node Faces for TODO keywords, , Per-file keywords, TODO extensions
- cindex faces, for TODO keywords
- Org mode highlights TODO keywords with special faces:
- code{org-done} for keywords indicating that an item is finished. If
- you are using more than 2 different states, you might want to use
- special faces for some of them. This can be done using the variable
- lisp
- end group
- emph{should} work, this does not aways seem to be the case. If
- necessary, define a special face and use that.
- node Progress logging, Priorities, TODO extensions, TODO Items
- cindex progress logging
- ref{Clocking
- work time}.
- end menu
- subsection Closing items
- The most basic logging is to keep track of
- footnote{The corresponding
- in-buffer setting is:
- lisp
- (setq org-log-done 'time)
- noindent
- Then each time you turn an entry from a TODO (not-done) state into any
- of the DONE states, a line
- footnote{The
- corresponding in-buffer setting is:
- lisp
- (setq org-log-done 'note)
- noindent
- You will then be prompted for a note, and that note will be stored below
- the entry with a
- pxref{Timeline}) and in the agenda
- (kbd{l} key to
- display the TODO items with a
- node Tracking TODO state changes, , Closing items, Progress logging
- pxref{Workflow
- states}), you might want to keep track of when a state change occurred
- and maybe take a note about this change. Since it is normally too much
- to record a note for every state, Org mode expects configuration on a
- per-keyword basis for this. This is achieved by adding special markers
- samp{} (for a note) in parenthesis
- after each keyword. For example, with the setting
- end lisp
- footnote{It is possible that Org mode will record two time stamps
- when you are using both
- samp{Closing Note}.}, and that a note is recorded when switching to
- WAIT or CANCELED. The setting for WAIT is even more special: The
- i{leaving} the
- WAIT state, if and only if the
- samp{/!} in the WAIT
- setting now triggers a timestamp even though TODO has no logging
- configured.
- You can use the exact same syntax for setting logging preferences local
- to a buffer:
- end example
- In order to define logging settings that are local to a subtree or a
- single item, define a LOGGING property in this entry. Any non-empty
- LOGGING property resets all logging settings to nil. You may then turn
- on logging for this specific tree using STARTUP keywords like
- code{logrepeat}, as well as adding state specific
- settings like
- example
- * TODO Log each state with only a time
- :PROPERTIES:
- :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
- :END:
- * TODO Only log when switching to WAIT, and when repeating
- :PROPERTIES:
- :LOGGING: WAIT() logrepeat
- :END:
- * TODO No logging at all
- :PROPERTIES:
- :LOGGING: nil
- :END:
- node Priorities, Breaking down tasks, Progress logging, TODO Items
- cindex priorities
- If you use Org mode extensively, you may end up enough TODO items that
- it starts to make sense to prioritize them. Prioritizing can be done by
- placing a
- example
- *** TODO [#A] Write letter to Sam Fortune
- noindent
- By default, Org mode supports three priorities: samp{B}, and
- samp{A} is the highest priority. An entry without a cookie
- is treated as priority
- pxref{Weekly/daily agenda}); outside the agenda, they have
- no inherent meaning to Org mode.
- Priorities can be attached to any outline tree entries; they do not need
- to be TODO items.
- kbd
- kbd{C-c ,}
- kbd{C-c ,}
- Set the priority of the current headline. The command prompts for a
- priority character samp{B} or
- key{SPC} instead, the priority cookie is removed from the headline.
- The priorities can also be changed ``remotely'' from the timeline and
- agenda buffer with the pxref{Agenda commands}).
- kindex S-
- kindex S-
- item S-
- itemx S-
- footnote{See also the
- option
- pxref{Creating timestamps}).
- Furthermore, these keys are also used by CUA mode (
- end table
- You can change the range of allowed priorities by setting the variables
- code{org-lowest-priority}, and
- example
- #+PRIORITIES: A C B
- node Breaking down tasks, Checkboxes, Priorities, TODO Items
- cindex tasks, breaking down
- It is often advisable to break down large tasks into smaller, manageable
- subtasks. You can do this by creating an outline tree below a TODO item,
- with detailed subtasks on the tree
- code{org-agenda-todo-list-sublevels}.}. To keep
- the overview over the fraction of subtasks that are already completed, insert
- either samp{[%]} anywhere in the headline. These cookies will
- be updates each time the todo status of a child changes. For example:
- end example
- If you would like a TODO entry to automatically change to DONE when all
- chilrden are done, you can use the following setup:
- end example
- Another possibility is the use of checkboxes to identify (a hierarchy of) a
- large number of subtasks (
- node Checkboxes, , Breaking down tasks, TODO Items
- cindex checkboxes
- Every item in a plain list (
- samp{[ ]}. This feature is
- similar to TODO items (
- kbd{C-c C-c}, or
- use the mouse (thanks to Piotr Zielinski's
- example
- * TODO Organize party [2/4]
- - [-] call people [1/3]
- - [ ] Peter
- - [X] Sarah
- - [ ] Sam
- - [X] order food
- - [ ] think about what music to play
- - [X] talk to the neighbors
- cindex statistics, for checkboxes
- samp{[2/4]} and
- samp{[/]} or
- samp{[/]} you get an
- samp{[%]} you get information about the
- percentage of checkboxes checked (in the above example, this would be
- samp{[33%]}, respectively).
- table
- kindex C-c C-c
- samp{[-]},
- which is considered to be an intermediate state.
- item C-c C-x C-b
- Toggle checkbox at point.
- minus
- item
- If the cursor is in a headline, toggle checkboxes in the region between
- this headline and the next (so
- item
- If there is no active region, just toggle the checkbox at point.
- kindex M-S-
- item M-S-
- pxref{Plain lists}).
- item C-c #
- Update the checkbox statistics in the current outline entry. When
- called with a
- kbd{C-c C-c} and make new ones with key{RET}}. If you
- delete boxes or add/change them by hand, use this command to get things
- back into synch. Or simply toggle any checkbox twice with
- end table
- chapter Tags
- cindex headline tagging
- cindex sparse tree, tag based
- An excellent way to implement labels and contexts for cross-correlating
- information is to assign
- samp{_}, and
- samp{:work:}. Several tags can be specified, as in
- code{org-tag-faces}, much in the same way as you can do for TODO keywords
- (
- menu
- * Tag inheritance:: Tags use the tree structure of the outline
- * Setting tags:: How to assign tags to a headline
- * Tag searches:: Searching for combinations of tags
- node Tag inheritance, Setting tags, Tags, Tags
- cindex tag inheritance
- cindex sublevels, inclusion into tags match
- example
- * Meeting with the French group :work:
- ** Summary by Frank :boss:notes:
- *** TODO Prepare slides for him :action:
- noindent
- the final heading will have the tags samp{:boss:},
- samp{:action:} even though the final heading is not
- explicitly marked with those tags. You can also set tags that all entries in
- a file should inherit as if these tags would be defined in a hypothetical
- level zero that surounds the entire file.
- end example
- code{org-use-tag-inheritance} and
- footnote{This is only true if the the search does not involve more
- complex tests including properties (
- code{org-tags-match-list-sublevels} (not recommended).
- section Setting tags
- cindex tags, setting
- key{TAB}
- Tags can simply be typed into the buffer at the end of a headline.
- After a colon, key{TAB}} offers completion on tags. There is
- also a special command for inserting tags:
- kbd
- item C-c C-q
- key{RET}, the tags will be inserted and aligned
- to kbd{C-u} prefix, all
- tags in the current buffer will be aligned to that column, just to make
- things look nice. TAGS are automatically realigned after promotion,
- demotion, and TODO state changes (
- kindex C-c C-c
- kbd{C-c C-q}.
- emph{list of tags}. By
- default this list is constructed dynamically, containing all tags
- currently used in the buffer. You may also globally specify a hard list
- of tags with the variable
- example
- #+TAGS: work home tennisclub
- #+TAGS: laptop car pc sailboat
- code{org-tag-alist}, but would like to use a dynamic tag list
- in a specific file, add an empty TAGS option line to that file:
- end example
- By default Org mode uses the standard minibuffer completion facilities for
- entering tags. However, it also implements another, quicker, tag selection
- method called
- code{org-tag-alist} in your
- samp{:home:}. In this case you can set something
- like:
- end lisp
- example
- #+TAGS: work(w) home(h) tennisclub(t) laptop(l) pc(p)
- noindent
- You can also group together tags that are mutually exclusive. By using
- braces, as in:
- { work(w) home(h) tennisclub(t)
- end example
- samp{work},
- samp{tennisclub} should be selected. Multiple such groups are allowed.
- kbd{C-c C-c} with the cursor in one of
- these lines to activate any changes.
- code{org-mode-alist}
- you must use the dummy tags code{:endgroup} instead
- of the braces. The previous example would be set globally by the following
- configuration:
- end lisp
- If at least one tag has a selection key then pressing
- footnote{Keys will automatically be assigned to tags which
- have no configured keys.}. In this interface, you can use the following
- keys:
- kbd
- kindex
- item
- kindex
- item
- kindex
- item
- item C-g
- Abort without installing changes.
- kbd{q} is not assigned to a tag, it aborts like
- item !
- Turn off groups of mutually exclusive tags. Use this to (as an
- exception) assign several tags from such a group.
- kbd{C-c} will display the
- selection window.
- noindent
- This method lets you assign tags to a headline with very few keys. With
- the above setup, you could clear the current tags and set
- samp{laptop} and kbd{C-c
- C-c key{RET}}. Switching from
- samp{work} would be done with key{RET}} or
- alternatively with
- samp{Sarah} could be done with key{TAB} S a r a h
- key{RET}}.
- If you find that most of the time, you need only a single key press to
- modify your list of tags, set the variable
- key{RET} to exit fast tag selection - it will immediately exit
- after the first change. If you then occasionally need more keys, press
- kbd{C-c C-c C-c} instead of
- code{expert}, the special
- window is not even shown for single-key tag selection, it comes up only
- when you press an extra
- node Tag searches, , Setting tags, Tags
- cindex tag searches
- table
- kindex C-c \
- item C-c \
- kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
- item C-c a m
- Create a global list of tag matches from all agenda files.
- kindex C-c a M
- code{org-tags-match-list-sublevels}).
- cindex Boolean logic, for tag searches
- A samp{&} for AND and
- samp{&} binds more strongly than
- samp{-}, to select against it, and
- samp{&} is optional when
- samp{-} is present. Examples:
- samp
- samp{:work:}, but discard those also tagged
- item work|laptop
- Selects lines tagged samp{:laptop:}.
- samp{:laptop:} lines to be tagged also
- end table
- pxref{TODO extensions}) and properties
- (
- ref{Property searches}. To match a
- specific TODO keyword, include an expression like
- samp{|}) with a
- emph{negative selection} combined
- with AND can be meaningful. To make sure that only lines are checked that
- actually have any TODO keyword (resulting in a speed-up), use
- samp{!}. Examples:
- samp
- samp{:work:}-tagged TODO lines with the specific TODO
- keyword
- item work+TODO="WAITING"|home+TODO="WAITING"
- Waiting tasks both at work and at home.
- item work/!-WAITING-NEXT
- Select samp{WAITING}
- nor
- item work/!+WAITING|+NEXT
- Select samp{WAITING} or
- end table
- samp{work+}} matches headlines that contain the tag
- i{starting} with
- samp{TODO=}} which would match TODO keywords
- starting with the letter
- cindex level, require for tags/property match
- samp{LEVEL=3} or
- samp{+LEVEL=3+boss/-DONE} lists all level three headlines that have the
- tag emph{not} marked with the TODO keyword DONE.
- Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
- other properties will slow down the search.
- chapter Properties and Columns
- code{:release_1:},
- code{:Release:}, that in different subtrees has different
- values, such as code{2.0}. For an example of the second
- application of properties, imagine keeping track of your music CD's,
- where properties could be things such as the album artist, date of
- release, number of tracks, and so on.
- Properties can be conveniently edited and viewed in column view
- (
- menu
- * Property syntax:: How properties are spelled out
- * Special properties:: Access to other Org mode features
- * Property searches:: Matching property values
- * Property inheritance:: Passing values down the tree
- * Column view:: Tabular viewing and editing
- * Property API:: Properties for Lisp programmers
- node Property syntax, Special properties, Properties and Columns, Properties and Columns
- cindex property syntax
- pxref{Drawers}) with the name
- example
- * CD collection
- ** Classic
- *** Goldberg Variations
- :PROPERTIES:
- :Title: Goldberg Variations
- :Composer: J.S. Bach
- :Artist: Glen Gould
- :Publisher: Deutsche Grammphon
- :NDisks: 1
- :END:
- samp{:Xyz:}
- by setting a property
- emph{inherited}, so if you set it in a level 1 entry, it will apply to
- the entire tree. When allowed values are defined, setting the
- corresponding property becomes easier and is less prone to typing
- errors. For the example with the CD collection, we can predefine
- publishers and the number of disks in a box like this:
- end example
- If you want to set properties that can be inherited by any entry in a
- file, use a line like
- end example
- Property values set with the global variable
- noindent
- The following commands help to work with properties:
- kbd
- key{TAB}
- key{TAB}
- After an initial colon in a line, complete property keys. All keys used
- in the current file will be offered as possible completions.
- item C-c C-x p
- Set a property. This prompts for a property name and a value. If
- necessary, the property drawer is created as well.
- kindex C-c C-c
- item C-c C-c s
- Set a property in the current entry. Both the property and the value
- can be inserted using completion.
- key{right}
- key{left}
- key{left}/
- item C-c C-c d
- Remove a property from the current entry.
- item C-c C-c c
- Compute the property at point, using the operator and scope from the
- nearest column format definition.
- node Special properties, Property searches, Property syntax, Properties and Columns
- cindex properties, special
- Special properties provide alternative access method to Org mode
- features discussed in the previous chapters, like the TODO state or the
- priority of an entry. This interface exists so that you can include
- these states into columns view (
- example
- TODO
- r{The tags defined directly in the headline.}
- ALLTAGS
- r{The priority of the entry, a string with a single letter.}
- DEADLINE
- r{The scheduling time stamp, without the angular brackets.}
- TIMESTAMP
- r{The first inactive time stamp in the entry.}
- CLOCKSUM code{org-clock-sum}}
-
- end example
- section Property searches
- cindex searching, of properties
- To create sparse trees and special lists with selection based on properties,
- the same commands are used as for tag searches (
- example
- +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
- +With=}+SCHEDULED>="<2008-10-11>"
- noindent
- The type of comparison will depend on how the comparison value is written:
- minus
- samp{<}, samp{>},
- samp{>=}, and
- item
- If the comparison value is enclosed in double
- quotes, a string comparison is done, and the same operators are allowed.
- emph{and} angular
- brackets (like
- code{"<now>"} for now (including time), and
- code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
- specification. Also strings like code{"<-2m>"} with units
- code{w}, code{y} for day, week, month, and year,
- respectively, can be used.
- samp{=} meaning that the
- regexp matches the property value, and
- end itemize
- So the search string in the example finds entries tagged
- samp{:boss:}, which also have a priority value
- samp{:Coffee:} property with the value samp{Effort}
- property that is numerically smaller than 2, a
- samp{Sarah\|Denny}, and that are scheduled
- on or after October 11, 2008.
- You can configure Org mode to use property inheritance during a search, but
- beware that this can slow down searches considerably. See
- table
- kindex C-c / p
- end table
- section Property Inheritance
- cindex inheritance, of properties
- The outline structure of Org mode documents lends itself for an
- inheritance model of properties: If the parent in a tree has a certain
- property, the children can inherit this property. Org mode does not
- turn this on by default, because it can slow down property searches
- significantly and is often not needed. However, if you find inheritance
- useful, you can turn it on by setting the variable
- code{t}, to make
- all properties inherited from the parent, to a list of properties
- that should be inherited, or to a regular expression that matches
- inherited properties.
- Org mode has a few properties for which inheritance is hard-coded, at
- least for the special applications for which they are used:
- code
- code{:COLUMNS:} property defines the format of column view
- (
- code{:COLUMNS:} property is defined is used as the starting
- point for a column view table, independently of the location in the
- subtree from where columns view is turned on.
- code{:CATEGORY:} property
- applies to the entire subtree.
- code{:ARCHIVE:} property may define the archive
- location for the entire subtree (
- item LOGGING
- The LOGGING property may define logging settings for an entry or a
- subtree (
- end table
- section Column view
- A great way to view and edit properties in an outline tree is
- kbd{S-key{TAB}}, or simply
- pxref{Agenda Views}) where
- queries have collected selected items, possibly from a number of files.
- end menu
- subsection Defining columns
- cindex properties, column view
- Setting up a column view first requires defining the columns. This is
- done by defining a column format line.
- end menu
- subsubsection Scope of column definitions
- To define a column format for an entire file, use a line like
- end example
- To specify a format that only applies to a specific tree, add a
- example
- ** Top node for columns view
- :PROPERTIES:
- :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
- :END:
- code{:COLUMNS:} property is present in an entry, it defines columns
- for the entry itself, and for the entire subtree below it. Since the
- column definition is part of the hierarchical structure of the document,
- you can define columns on level 1 that are general enough for all
- sublevels, and more specific columns further down, when you edit a
- deeper part of the tree.
- subsubsection Column attributes
- A column definition sets the attributes of a column. The general
- definition looks like this:
- {summary-type
- end example
- example
- width
- r{If omitted, the width will be determined automatically.}
- property
- r{The header text for the column. If omitted, the}
-
- {summary-typer{The summary type. If specified, the column values for}
-
- r{Supported summary types are:}
- }
- {+;%.1fr{Like samp{%.1f}.}
- } samp{+;%.2f}.}
- }
- {Xr{Checkbox status, [X] if all children are [X].}
- }
- {X%r{Checkbox status, [n%].}
- noindent
- Here is an example for a complete columns definition, along with allowed
- values.
- {Xfootnote{Please note that the COLUMNS definition must be on a single line - it is wrapped here only because of formatting constraints.}
- %10Time_Estimate} %CLOCKSUM
- :Owner_ALL: Tammy Mark Karl Lisa Don
- :Status_ALL: "In progress" "Not started yet" "Finished" ""
- :Approved_ALL: "[ ]" "[X]"
- samp{%25ITEM}, means the first 25 characters of the
- item itself, i.e. of the headline. You probably always should start the
- column definition with the
- samp{Owner} with a list of names as allowed values, for
- samp{Approved}. When no width is given after the
- samp{Approved} column does have a
- modified title (
- samp{Time_Estimate} column by adding time duration
- expressions like HH:MM, and for the
- samp{[X]} status if all children have been checked. The
- node Using column view, Capturing column view, Defining columns, Column view
- table
- tsubheading{Turning column view on and off}
- item C-c C-x C-c
- Create the column view for the local environment. This command searches
- the hierarchy, up from point, for a
- code{:COLUMNS:}
- property. If none is found, the format is taken from the
- code{org-columns-default-format}, and column
- view is established for the current entry and its subtree.
- item r
- Recreate the column view, to include recent changes made in the buffer.
- item g
- Same as
- kindex q
- tsubheading{Editing values}
- key{left} key{up}
- kindex S-
- kindex S-
- item S-key{right}
- Switch to the next/previous allowed value of the field. For this, you
- have to have specified allowed values for a property.
- kbd{0} selects the 10th value.
- kindex p
- kbd{S-key{right}}
- item e
- Edit the property at point. For the special properties, this will
- invoke the same interface that you normally use to change that
- property. For example, when editing a TAGS property, the tag completion
- or fast selection interface will pop up.
- item C-c C-c
- When there is a checkbox at point, toggle it.
- item v
- View the full value of this property. This is useful if the width of
- the column is smaller than that of the value.
- item a
- Edit the list of allowed values for this property. If the list is found
- in the hierarchy, the modified values is stored there. If no list is
- found, the new value is stored in the first entry that is part of the
- current column view.
- kindex <
- item < / >
- Make the column narrower/wider by one character.
- key{right}
- key{right}
- Insert a new column, to the left of the current column.
- key{left}
- key{left}
- Delete the current column.
- node Capturing column view, , Using column view, Column view
- code{columnview} dynamic block (
- cindex #+BEGIN: columnview
- end example
- table
- item :id
- This is most important parameter. Column view is a feature that is
- often localized to a certain (sub)tree, and the capture block might be
- in a different location in the file. To identify the tree whose view to
- capture, you can use 3 values:
- r{use the tree in which the capture block is located}
- global
- r{run column view at the top of this file}
- "ID" code{:ID:}}
- i{label}. You can use}
- kbd{M-x org-id-copy} to create a globally unique ID for}
-
- end example
- code{t}, insert a hline after every line. When a number N, insert
- a hline before each headline with level
- item :vlines
- When set to
- item :maxlevel
- When set to a number, don't capture entries below this level.
- code{t}, skip row where the only non-empty specifier of the
- column view is
- end table
- table
- kindex C-c C-x i
- kindex C-c C-c
- kindex C-c C-x C-u
- code{#+BEGIN} line of the dynamic block.
- item C-u C-c C-x C-u
- Update all dynamic blocks (
- end table
- You can add formulas to the column view table and you may add plotting
- instructions in front of the table - these will survive an update of the
- block. If there is a
- node Property API, , Column view, Properties and Columns
- cindex properties, API
- ref{Using the
- property API}.
- chapter Dates and Times
- cindex times
- cindex date stamps
- To assist project planning, TODO items can be labeled with a date and/or
- a time. The specially formatted string carrying the date and time
- information is called a
- menu
- * Timestamps:: Assigning a time to a tree entry
- * Creating timestamps:: Commands which insert timestamps
- * Deadlines and scheduling:: Planning your work
- * Clocking work time:: Tracking how long you spend on a task
- * Effort estimates:: Planning work effort in advance
- * Relative timer:: Notes with a running timer
- node Timestamps, Creating timestamps, Dates and Times, Dates and Times
- cindex time stamps
- cindex date stamps
- cindex scheduling
- A time stamp is a specification of a date (possibly with time or a range
- of times) in a special format, either
- samp{<2003-09-16 Tue 09:39>} or
- footnote{This is the standard ISO date/time format. To
- use an alternative format, see
- pxref{Weekly/daily agenda}). We distinguish:
- var
- cindex timestamp
- A simple time stamp just assigns a date/time to an item. This is just
- like writing down an appointment or event in a paper agenda. In the
- timeline and agenda displays, the headline of an entry associated with a
- plain time stamp will be shown exactly on that date.
- end example
- cindex timestamp, with repeater interval
- A time stamp may contain a
- example
- * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
- item Diary-style sexp entries
- For more complex date specifications, Org mode supports using the
- special sexp diary entries implemented in the Emacs calendar/diary
- package. For example
- end example
- cindex timerange
- samp{--} denote a range. The headline
- will be shown on the first and last day of the range, and on any dates
- that are displayed and fall in the range. Here is an example:
- end example
- cindex timestamp, inactive
- emph{not} trigger an entry to show up in the agenda.
- end example
- node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
- cindex creating timestamps
- table
- kindex C-c .
- c
- item C-u C-c .
- Like
- code{org-time-stamp-rounding-minutes}.
- kindex C-c !
- kbd{C-c .}, but insert an inactive time stamp that will not cause
- an agenda entry.
- kindex C-c <
- c
- item C-c >
- Access the Emacs calendar for the current date. If there is a
- timestamp in the current line, go to the corresponding date
- instead.
- kindex C-c C-o
- pxref{Weekly/daily agenda}).
- kindex S-
- kindex S-
- item S-
- itemx S-
- pxref{Conflicts}).
- kindex S-
- kindex S-
- item S-
- itemx S-
- pxref{Priorities}). The key bindings also conflict with
- CUA mode (
- c
- cindex evaluate time range
- end table
- end menu
- subsection The date/time prompt
- cindex time, reading in minibuffer
- When Org mode prompts for a date/time, the default is shown as an ISO
- date, and the prompt therefore seems to ask for an ISO date. But it
- will in fact accept any string containing some date and/or time
- information, and it is really smart about interpreting your input. You
- can, for example, use
- emph{default date and time}. The default is usually the current date
- and time, but when modifying an existing time stamp, or when entering
- the second stamp of a range, it is taken from the stamp in the buffer.
- When filling in information, Org mode assumes that most of the time you
- will want to enter a date in the future: If you omit the month/year and
- the given day/month is
- footnote{See the variable
- b{June 13, 2006}. Here is how
- various inputs will be interpreted, the items filled in by Org mode are
- in
- example
- 3-2-5 --> 2003-02-05
- 14 --> b{06}-14
- 12 --> b{07}-12
- Fri --> nearest Friday (defaultdate or later)
- sep 15 -->
- b{2007}-02-15
- sep 12 9 --> 2009-09-12
- 12:45 --> b{06}-
- b{2006}-09-22 0:34
- w4 --> ISO week for of the current year
- end example
- Furthermore you can specify a relative date by giving, as the
- example
- +0 --> today
- . --> today
- +4d --> four days from today
- +4 --> same as above
- +2w --> two weeks from today
- ++5 --> five days from default date
- +2tue --> second tuesday from now.
- code{parse-time-months} and
- cindex calendar, for selecting date
- Parallel to the minibuffer prompt, a calendar is popped up
- code{org-popup-calendar-for-date-prompt}.}. When you exit the date
- prompt, either by clicking on a date in the calendar, or by pressing
- kindex <
- kindex mouse-1
- key{right}
- key{left}
- key{down}
- key{up}
- key{right}
- key{left}
- key{RET}
- r{Scroll calendar forward/backward by one month.}
- mouse-1
- key{right}/r{One day forward/backward.}
- S-key{up}
- key{right}/r{One month forward/backward.}
- r{Choose date in calendar.}
- footnote{If you find this distracting, turn the display of with
- node Custom time format, , The date/time prompt, Creating timestamps
- cindex custom date/time format
- cindex date format, custom
- Org mode uses the standard ISO notation for dates and times as it is
- defined in ISO 8601. If you cannot get used to this and require another
- representation of date and time to keep you happy, you can get it by
- customizing the variables
- code{org-time-stamp-custom-formats}.
- kbd
- item C-c C-x C-t
- Toggle the display of custom formats for dates and times.
- noindent
- Org mode needs the default format for scanning, so the custom date/time
- format does not
- emph{over} the default format using text properties. This has the
- following consequences:
- bullet
- item
- The key{up}/
- kbd{S-key{down}} will change the stamp by one day,
- just like key{left}/
- item
- If the time stamp contains a range of clock times or a repeater, these
- will not be overlayed, but remain in the buffer as they were.
- emph{all} (invisible) characters
- belonging to the ISO timestamp have been removed.
- end itemize
- section Deadlines and scheduling
- A time stamp may be preceded by special keywords to facilitate planning:
- var
- cindex DEADLINE keyword
- Meaning: the task (most likely a TODO item, though not necessarily) is supposed
- to be finished on that date.
- On the deadline date, the task will be listed in the agenda. In
- addition, the agenda for
- code{org-deadline-warning-days} before the due date, and continuing
- until the entry is marked DONE. An example:
- end example
- You can specify a different lead time for warnings for a specific
- deadlines using the following syntax. Here is an example with a warning
- period of 5 days
- item SCHEDULED
- footnote{It will still
- be listed on that date after it has been marked DONE. If you don't like
- this, set the variable
- emph{today}, until the entry is marked DONE.
- I.e., the task will automatically be forwarded until completed.
- end example
- b{Important:} Scheduling an item in Org mode should
- i{scheduling a meeting}.
- Setting a date for a meeting is just a simple appointment, you should
- mark this entry with a simple plain time stamp, to get this item shown
- on the date where it applies. This is a frequent mis-understanding from
- Org-users. In Org mode,
- end table
- You may use time stamps with repeaters in scheduling and deadline
- entries. Org mode will issue early and late warnings based on the
- assumption that the time stamp represents the
- c
- c
- in scheduling and deadline timestamps is limited. Org mode does not
- know enough about the internals of each sexp function to issue early and
- late warnings. However, it will show the item on each day where the
- sexp entry matches.
- end menu
- subsection Inserting deadlines or schedules
- The following commands allow to quickly insert a deadline or to schedule
- an item:
- kbd
- kindex C-c C-d
- samp{DEADLINE} keyword along with a stamp. The insertion will
- happen in the line directly following the headline. When called with a
- prefix arg, an existing deadline will be removed from the entry.
- c
- cindex sparse tree, for deadlines
- code{org-deadline-warning-days}.
- With
- kbd{C-1 C-c / d} shows
- all deadlines due tomorrow.
- kindex C-c C-s
- samp{SCHEDULED} keyword along with a stamp. The insertion will
- happen in the line directly following the headline. Any CLOSED
- timestamp will be removed. When called with a prefix argument, remove
- the scheduling date from the entry.
- kindex C-c C-x C-k
- kindex k s
- kbd{k s} or
- end table
- subsection Repeated tasks
- Some tasks need to be repeated again and again. Org mode helps to
- organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
- or plain time stamp. In the following example
- end example
- the
- code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
- Deadlines and scheduled items produce entries in the agenda when they
- are over-due, so it is important to be able to mark such an entry as
- completed once you have done so. When you mark a DEADLINE or a SCHEDULE
- with the TODO keyword DONE, it will no longer produce entries in the
- agenda. The problem with this is, however, that then also the
- kbd{C-c C-t}), it will shift the base date of the repeating
- time stamp by the repeater interval, and immediately set the entry state
- back to TODO. In the example above, setting the state to DONE would
- actually switch the date like this:
- end example
- A timestamp
- code{org-log-repeat}, or the code{logrepeat},
- code{nologrepeat}. With
- samp{+1m} cookie, the date shift will always be exactly one
- month. So if you have not payed the rent for three months, marking this
- entry DONE will still keep it as an overdue deadline. Depending on the
- task, this may not be the best way to handle it. For example, if you
- forgot to call you father for 3 weeks, it does not make sense to call
- him 3 times in a single day to make up for it. Finally, there are tasks
- like changing batteries which should always repeat a certain time
- samp{++} and
- example
- ** TODO Call Father
- DEADLINE: <2008-02-10 Sun ++1w>
- Marking this DONE will shift the date by at least one week,
- but also by as many weeks as it takes to get this date into
- the future. However, it stays on a Sunday, even if you called
- and marked it done on Saturday.
- ** TODO Check the batteries in the smoke detectors
- DEADLINE: <2005-11-01 Tue .+1m>
- Marking this DONE will shift the date to one month after
- today.
- node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
- table
- kindex C-c C-x C-i
- code{:CLOCK:} drawer (see also the variable
- kbd{C-u} prefix argument,
- select the task from a list of recently clocked tasks. With two
- kbd{d}.
- item C-c C-x C-o
- Stop the clock (clock-out). The inserts another timestamp at the same
- location where the clock was last started. It also directly computes
- the resulting time in inserts it after the time range as
- code{org-log-note-clock-out} for the
- possibility to record an additional note together with the clock-out
- time stamp
- code{#+STARTUP: lognoteclock-out}}.
- item C-c C-y
- Recompute the time interval after changing one of the time stamps. This
- is only necessary if you edit the time stamps directly. If you change
- them with key{cursor}} keys, the update is automatic.
- item C-c C-t
- Changing the TODO state of an item to DONE automatically stops the clock
- if it is running in this same item.
- item C-c C-x C-x
- Cancel the current clock. This is useful if a clock was started by
- mistake, or if you ended up working on something else.
- item C-c C-x C-j
- Jump to the entry that contains the currently running clock. With a
- kindex C-c C-x C-d
- code{org-remove-highlights-with-change}) or press
- kindex C-c C-x C-r
- pxref{Dynamic blocks}) containing a clock
- report as an Org mode table into the current file. When the cursor is
- at an existing clock table, just update it. When called with a prefix
- argument, jump to the first clock report in the current document and
- update it.
- example
- #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
- #+END: clocktable
- noindent
- If such a block already exists at point, its content is replaced by the
- new table. The
- example
- :maxlevel
- r{When
- r{The scope to consider. This can be any of the following:}
- nil
- r{the full current buffer}
- subtree
- r{the surrounding level N tree, for example
- r{the surrounding level 1 tree}
- agenda
- r{scan these files}
- file-with-archives
- r{all agenda files, including archives}
- :block
- r{absolute, or relative to the current time and may be any of}
-
- r{New year eve 2007}
- 2007-12
- r{ISO-week 50 in 2007}
- 2007
- r{a relative day}
- thisweek, lastweek, thisweek-N
- r{a relative month}
- thisyear, lastyear, thisyear-N
- r{Use key{left}/
- r{A time string specifying when to start considering times}
- :tend
- r{code{day}, to split the table into chunks.}
- code{:block} or code{:tend} are needed.}
- :link
- r{Content of a
- r{As a special case,
- r{If you do not specify a formula here, any existing formula}
-
- end example
- So to get a clock summary of the current level 1 tree, for the current
- day, you could write
- end example
- and to use a specific time range you could write
- example
- #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
- :tend "<2006-08-10 Thu 12:00>"
- #+END: clocktable
- example
- #+BEGIN: clocktable :scope subtree :link t :formula %
- #+END: clocktable
- kindex C-c C-c
- kindex C-c C-x C-u
- code{#+BEGIN} line of the dynamic block.
- item C-u C-c C-x C-u
- Update all dynamic blocks (
- kindex S-
- kindex S-
- item S-
- itemx S-
- code{:block} interval and update the table. The cursor
- needs to be in the
- code{:block} is code{today-1} etc.
- kbd{l} key may be used in the timeline (
- pxref{Weekly/daily agenda}) to show which tasks have been
- worked on or closed during a day.
- section Effort estimates
- samp{Effort}
- code{org-effort-property}.}. Clearly the best way to
- work with effort estimates is through column view (
- code{COLUMNS} format that displays these values together with clock sums (if
- you want to clock your time). For a specific buffer you can use
- {:
- end example
- code{org-global-properties} and
- kbd{S-kbd{S-
- footnote{Please note
- the pitfalls of summing hierarchical data in a flat list (
- code{org-agenda-columns-add-appointments-to-effort-sum}. The
- appointments on a day that take place over a specified time interval will
- then also be added to the load estimate of the day.
- Effort estimates can be used in secondary agenda filtering that is triggered
- with the pxref{Agenda commands}). If you have
- these estimates defined consistently, two or three key presses will narrow
- down the list to stuff that fits into an available time slot.
- section Taking notes with a relative timer
- table
- kindex C-c C-x .
- kindex C-c C-x -
- kindex M-
- item M-
- kbd{M-
- kindex C-c C-x 0
- kbd{C-u} prefix, reset the timer to
- specific starting offset. The user is prompted for the offset, with a
- default taken from a timer string at point, if any, So this can be used to
- restart taking notes after a break in the process. When called with a double
- prefix argument
- end table
- chapter Capture
- file{remember} package to create tasks, and stores files
- related to a task (
- menu
- * Remember:: Capture new tasks/ideas with little interruption
- * Attachments:: Add files to tasks.
- node Remember, Attachments, Capture, Capture
- cindex
- i{Remember} package by John Wiegley lets you store quick notes with
- little interruption of your work flow. See
- i{remember}: You may define templates for different note types, and
- associate target files and headlines with specific templates. It also
- allows you to select the location where a note should be stored
- interactively, on the fly.
- end menu
- subsection Setting up Remember
- The following customization will tell
- example
- (org-remember-insinuate)
- (setq org-directory "~/path/to/my/orgfiles/")
- (setq org-default-notes-file (concat org-directory "/notes.org"))
- (define-key global-map "\C-cr" 'org-remember)
- code{org-remember} to a global
- keykbd{C-c r} is only a
- suggestion.}. code{remember},
- but it makes a few things easier: If there is an active region, it will
- automatically copy the region into the remember buffer. It also allows
- to jump to the buffer and location where remember notes are being
- stored: Just call
- code{org-mode} as its major mode, so
- that all editing features of Org-mode are available. In addition to this, a
- minor mode
- code{org-remember-mode-map} to overwrite some of
- Org-mode's key bindings.
- You can also call
- kbd{k r} key combination. With this access, any time stamps
- inserted by the selected remember template (see below) will default to
- the cursor date in the agenda, rather than to the current date.
- subsection Remember templates
- i{remember} notes. For example, if you would like
- to use one template to create general TODO entries, another one for
- journal entries, and a third one for collecting random ideas, you could
- use:
- {Title
- end example
- code{nil}) defaults to
- code{org-remember-default-headline}. If the file name is not an absolute
- path, it will be interpreted relative to
- code{top} or
- code{org-remember} will first check whether the function returns
- code{nil} or
- example
- (setq org-remember-templates
- '(("Bug" ?b "* BUG %?\n %i\n %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
- ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org" "X" my-check)
- ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
- code{org-remember}
- from an buffer in
- code{my-check} returns
- kbd{M-x org-remember} (or
- example
- * TODO
- [[file:link to where you called remember]]
- noindent
- During expansion of the template, special
- example
- %^}
- r{You may specify a default value and a completion table with}
- {prompt|default|completion2|completion3...
- r{The arrow keys access a prompt-specific history.}
- %a code{org-store-link}}
- %A code{%a}, but prompt for the description part}
- %i
- r{The entire text will be indented like
- r{time stamp, date only}
- %T
- r{like the above, but inactive time stamps}
- %^t code{%t}, but prompt for date. Similarly code{%^u},
- r{You may define a prompt like {Birthday
- r{user name (taken from
- r{Current kill ring head.}
- %x
- r{Interactive selection of which kill or clip to use.}
- %^L code{%^C}, but insert as link.}
- %^g
- r{title of currently clocked task}
- %K
- r{prompt for tags, with completion all tags in all agenda files.}
- %^}p code{prop}}
- %:keyword
- r{insert the contents of the file given by
- r{evaluate elisp
- r{immediately store note after completing the template}
- kbd{C-c C-c} that normally triggers storing)}
- %&
- end example
- footnote{If you define your own link types (
- code{org-store-link-props} can be accessed in remember templates in a
- similar way.}:
- r{(either "to NAME" or "from NAME")code{org-from-is-user-regexp}.}}
- gnus | %:group,
- end example
- example
- %?
- end example
- code{org-remember} in the remember buffer. You may then select a new
- template that will be filled with the previous context information.
- subsection Storing notes
- When you are finished preparing a note with
- kbd{C-c C-c} to file the note away. If you have started the clock in the
- remember buffer, you will first be asked if you want to clock out
- now
- code{org-remember-clock-out-on-exit}.}. If you answer
- code{remember}. To re-use the location found
- during the last call to
- kbd{C-0 C-c C-c}, i.e. specify a zero prefix argument to
- kbd{C-2 C-c C-c} which files the note as a child of
- the currently clocked item.
- If you want to store the note directly to a different place, use
- footnote{Configure the
- variable
- key{RET}, the value specified for the template is used.
- Then the command offers the headings tree of the selected file, with the
- cursor position at the default headline (if you had specified one in the
- template). You can either immediately press
- example
- r{Cycle visibility.}
- key{up}
- r{Next/previous visible headline.}
- f / b
- r{One level up.}
- r{Digit argument.}
- noindent
- Pressing key{left} or
- multitable
- item tab tab
- item on headline key{RET}
- item tab depending on
- item key{left}/tab as same level, before/after current heading
- tab tab as level 2 heading at end of file or level 1 at beginning
- tab code{org-reverse-note-order}.
- tab
- tab at cursor position, level taken from context.
- samp{*}. If not, a
- headline is constructed from the current date. If you have indented the text
- of the note below the headline, the indentation will be adapted if inserting
- the note into the tree requires demotion from level 1.
- subsection Refiling notes
- table
- kindex C-c C-w
- code{org-reverse-note-order}, it will be either the first or
- last subitem.
- code{org-refile-targets} for details. If you would like to
- select a location via a file-path-like completion along the outline path, see
- the variables
- code{org-outline-path-complete-in-steps}.
- item C-u C-c C-w
- Use the refile interface to jump to a heading.
- item C-u C-u C-c C-w
- Jump to the location where
- end table
- section Attachments
- pxref{Hyperlinks}) can be used to establish associations with
- files that live elsewhere on your computer or in the cloud, like emails or
- source code files belonging to a project. Another method is
- file{data} directory which lives in the same directory where
- your org-file lives
- code{org-attach-directory}
- to contain an absolute path.}. If you initialize this directory with
- noindent The following commands deal with attachments.
- kbd
- item C-c C-a
- The dispatcher for commands related to the attachment system. After these
- keys, a list of commands is displayed and you need to press an additional key
- to select a command:
- kbd
- item a
- Select a file and move it into the task's attachment directory. The file
- will be copied, moved, or linked, depending on
- kindex C-c C-a c
- kindex C-c C-a l
- kindex C-c C-a n
- kindex C-c C-a z
- kindex C-c C-a o
- code{org-file-apps}.
- For more details, see the information on following hyperlings
- (
- kindex C-c C-a O
- kindex C-c C-a f
- kindex C-c C-a F
- code{dired} in Emacs.
- item d
- Select and delete a single attachment.
- item D
- Delete all of a task's attachments. A safer way is to open the directory in
- dired and delete from there.
- end table
- chapter Agenda Views
- itemize
- item
- an
- item
- a
- item
- a
- item
- a
- item
- a
- item
- a
- item
- end itemize
- emph{agenda
- buffer}. This buffer is read-only, but provides commands to visit the
- corresponding locations in the original Org files, and even to
- edit these files remotely.
- Two variables control how the agenda buffer is displayed and whether the
- window configuration is restored when the agenda exits:
- code{org-agenda-restore-windows-after-quit}.
- end menu
- section Agenda files
- cindex files for agenda
- The information to be shown is normally collected from all
- code{org-agenda-files}
- file{.org} in this directory will be part
- of the list.
- Thus even if you only work with a single Org file, this file should
- be put into that list
- kbd{<} before selecting a command will actually limit the command to
- the current file, and ignore
- code{org-agenda-files}, but
- the easiest way to maintain it is through the following commands
- table
- kindex C-c [
- kindex C-c ]
- kindex C-,
- item C-,
- kindex M-x org-iswitchb
- code{iswitchb}-like interface to switch to and between Org
- buffers.
- noindent
- The Org menu contains the current list of files and can be used
- to visit any of them.
- If you would like to focus the agenda temporarily onto a file not in
- this list, or onto just one file in the list or even only a subtree in a
- file, this can be done in different ways. For a single agenda command,
- you may press
- pxref{Agenda dispatcher}). To restrict the agenda scope for an
- extended period, use the following commands:
- kbd
- item C-c C-x <
- Permanently restrict the agenda to the current subtree. When with a
- prefix argument, or with the cursor before the first headline in a file,
- the agenda scope is set to the entire file. This restriction remains in
- effect until removed with kbd{<}
- or
- kindex C-c C-x >
- kbd{C-c C-x <}.
- noindent
- When working with
- table
- kindex <
- r{in the speedbar frame}
- Permanently restrict the agenda to the item at the cursor in the
- Speedbar frame, either an Org file or a subtree in such a file.
- If there is a window displaying an agenda view, the new restriction takes
- effect immediately.
- item >
- end table
- section The agenda dispatcher
- cindex dispatching agenda commands
- The views are created through a dispatcher that should be bound to a
- global key, for example pxref{Installation}). In the
- following we will assume that
- kbd{C-c a}, an additional letter is required to execute a
- command. The dispatcher offers the following default commands:
- kbd
- pxref{Weekly/daily agenda}).
- r{/} T
- Create a list of all TODO items (
- item m
- pxref{Matching
- tags and properties}).
- pxref{Timeline}).
- item /
- Search for a regular expression in all agenda files and additionally in
- the files listed in
- code{multi-occur}. A prefix argument can be
- used to specify the number of context lines for each match, default is
- 1.
- r{/} !
- Create a list of stuck projects (
- item <
- Restrict an agenda command to the current buffer
- kbd{1} to restrict to the current
- buffer.}. After pressing
- item < <
- If there is an active region, restrict the following agenda command to
- the region. Otherwise, restrict it to the current subtree
- kbd{0} to restrict to the
- current buffer.}. After pressing
- end table
- You can also define custom commands that will be accessible through the
- dispatcher, just like the default commands. This includes the
- possibility to create extended agenda buffers that contain several
- blocks together, for example the weekly agenda, the global TODO list and
- a number of special tags matches.
- node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
- menu
- * Weekly/daily agenda:: The calendar page with current tasks
- * Global TODO list:: All unfinished action items
- * Matching tags and properties:: Structured information with fine-tuned search
- * Timeline:: Time-sorted view for single file
- * Keyword search:: Finding entries by keyword
- * Stuck projects:: Find projects you need to review
- node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
- cindex agenda
- cindex daily agenda
- The purpose of the weekly/daily
- table
- cindex org-agenda, command
- item C-c a a
- Compile an agenda for the current week from a list of org files. The agenda
- shows the entries for each day. With a numeric prefix
- kbd{C-u} causes all TODO entries to be
- listed before the agenda. This feature is deprecated, use the dedicated TODO
- list, or a block agenda instead (kbd{C-u 2 1
- C-c a a}) you may set the number of days to be displayed (see also the
- variable
- end table
- Remote editing from the agenda buffer means, for example, that you can
- change the dates of deadlines and appointments from the agenda buffer.
- The commands available in the Agenda buffer are listed in
- subsubheading Calendar/Diary integration
- cindex diary integration
- Emacs contains the calendar and diary by Edward M. Reingold. The
- calendar displays a three-month calendar with holidays from different
- countries and cultures. The diary allows you to keep track of
- anniversaries, lunar phases, sunrise/set, recurrent appointments
- (weekly, monthly) and more. In this way, it is quite complementary to
- Org. It can be very useful to combine output from Org with
- the diary.
- In order to include entries from the Emacs diary into Org mode's
- agenda, you only need to customize the variable
- end lisp
- key{SPC},
- key{RET} can be used from the agenda buffer to jump to the diary
- file in order to edit existing diary entries. The
- kbd{S}, kbd{C} to display
- Sunrise/Sunset times, show lunar phases and to convert to other
- calendars, respectively.
- example
- * Birthdays and similar stuff
- #+CATEGORY: Holiday
- %%(org-calendar-holiday) ; special function for holiday names
- #+CATEGORY: Ann
- %%(diary-anniversary 14 5 1956) Arthur Dent is %d years old
- %%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old
- subsubheading Appointment reminders
- file{appt.el}
- code{org-agenda-to-appt}. This commands also lets you filter through
- the list of your appointments and add only those belonging to a specific
- category or matching a regular expression. See the docstring for
- details.
- subsection The global TODO list
- cindex TODO list, global
- The global TODO list contains all unfinished TODO items, formatted and
- collected into a single place.
- kbd
- item C-c a t
- Show the global TODO list. This collects the TODO items from all
- agenda files (
- code{agenda-mode}, so there are commands to examine and manipulate
- the TODO entries directly from that buffer (
- kindex C-c a T
- cindex TODO keyword matching
- Like the above, but allows selection of a specific TODO keyword. You
- can also do this by specifying a prefix argument to
- kbd{C-u} prefix you are prompted for a keyword, and you may also
- specify several keywords by separating them with
- code{org-todo-keywords} is selected.
- kbd{r} key in the agenda buffer regenerates it, and you can give
- a prefix argument to this command to change the selected TODO keyword,
- for example
- pxref{Agenda dispatcher}).
- pxref{Tag searches}).
- ref{Agenda commands}.
- itemize
- item
- Some people view a TODO item that has been
- pxref{Timestamps}) as no longer
- code{org-agenda-todo-ignore-scheduled} to exclude scheduled
- items from the global TODO list.
- code{org-agenda-todo-list-sublevels} to get this behavior.
- node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
- cindex matching, of tags
- cindex tags view
- emph{tags}
- (
- table
- kindex C-c a m
- samp{+work+urgent-withboss} or
- pxref{Tags}). If you often need a specific search,
- define a custom command for it (
- kindex C-c a M
- kbd{C-c a m}, but only select headlines that are also TODO items
- and force checking subitems (see variable
- ref{Tag searches}.
- ref{Agenda
- commands}.
- subsection Timeline for a single file
- cindex time-sorted view
- The timeline summarizes all time-stamped items from a single Org mode
- file in a
- table
- kindex C-c a L
- kbd{C-u} prefix, all unfinished TODO entries
- (scheduled or not) are also listed under the current date.
- noindent
- The commands available in the timeline buffer are listed in
- node Keyword search, Stuck projects, Timeline, Built-in agenda views
- cindex keyword search
- table
- kindex C-c a s
- example
- +computer +wifi -ethernet -}
- noindent
- will search for note entries that contain the keywords
- code{wifi}, but not the keyword
- code{8\.11[bg]}, meaning to
- exclude both 8.11b and 8.11g.
- Note that in addition to the agenda files, this command will also search
- the files listed in
- end table
- subsection Stuck projects
- If you are following a system like David Allen's GTD to organize your
- work, one of the ``duties'' you have is a regular review to make sure
- that all projects move along. A
- table
- kindex C-c a #
- kindex C-c a !
- code{org-stuck-projects} to define what a stuck
- project is and how to find it.
- samp{+PROJECT/-MAYBE-DONE}, and then check for
- TODO, NEXT, SHOP, and IGNORE in the subtree to identify projects that
- are not stuck. The correct customization for this is
- end lisp
- section Presentation and sorting
- emph{prefix} that contains the
- pxref{Categories}) of the item and other important information. You can
- customize the prefix using the option
- menu
- * Categories:: Not all tasks are equal
- * Time-of-day specifications:: How the agenda knows the time
- * Sorting of agenda items:: The order of things
- node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
- cindex category
- The category is a broad label assigned to each agenda item. By default,
- the category is simply derived from the file name, but you can also
- specify it with a special line in the buffer, like this
- emph{strongly} deprecated as it is
- incompatible with the outline structure of the document. The correct
- method for setting multiple categories in a buffer is using a
- property.}:
- end example
- code{:CATEGORY:} property with the location
- as the value (
- noindent
- The display in the agenda buffer looks best if the category is not
- longer than 10 characters.
- subsection Time-of-day specifications
- w{
- c
- samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
- In the headline of the entry itself, a time(range) may also appear as
- plain text (like samp{8:30-1pm}). If the agenda
- integrates the Emacs diary (
- example
- 8:30-13:00 Arthur Dent lies in front of the bulldozer
- 12:45...... Ford Prefect arrives and takes Arthur to the pub
- 19:00...... The Vogon reads his poem
- 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
- cindex time grid
- If the agenda is in single-day mode, or for the display of today, the
- timed entries are embedded in a time grid, like
- end example
- The time grid can be turned on and off with the variable
- code{org-agenda-time-grid}.
- subsection Sorting of agenda items
- cindex priorities, of agenda items
- Before being inserted into a view, the items are sorted. How this is
- done depends on the type of view.
- bullet
- emph{schedule} for the day. After that, items remain
- grouped in categories, in the sequence given by
- pxref{Priorities}),
- which is composed of the base priority (2000 for priority
- samp{B}, and 0 for
- item
- For the TODO list, items remain in the order of categories, but within
- each category, sorting takes place according to priority
- (
- item
- For tags matches, items are not sorted at all, but just appear in the
- sequence in which they are found in the agenda files.
- code{org-agenda-sorting-strategy}, and may also include criteria based on
- the estimated effort of an entry (
- node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
- cindex commands, in agenda buffer
- Entries in the agenda buffer are linked back to the org file or diary
- file where they originate. You are not allowed to edit the agenda
- buffer itself, but commands are provided to show and jump to the
- original entry location, and to edit the org-files ``remotely'' from
- the agenda buffer. In this way, all information is stored only once,
- removing the risk that your agenda and note files may diverge.
- Some commands can be executed with mouse clicks on agenda lines. For
- the other commands, the cursor needs to be in the desired line.
- kbd
- cindex motion commands in agenda
- item n
- Next line (same as kbd{C-p}).
- item p
- Previous line (same as kbd{C-n}).
- kindex mouse-3
- key{SPC}
- itemx
- c
- item L
- Display original location and recenter that window.
- kindex mouse-2
- kindex
- item mouse-2
- itemx
- kbd{mouse-1} will also works for this.
- kindex
- itemx
- c
- item f
- Toggle Follow mode. In Follow mode, as you move the cursor through
- the agenda buffer, the other window always shows the corresponding
- location in the org file. The initial setting for this mode in new
- agenda buffers can be set with the variable
- c
- item b
- Display the entire subtree of the current item in an indirect buffer. With a
- numeric prefix argument N, go up to level N and then take that tree. If N is
- negative, go up that many levels. With a
- c
- item l
- Toggle Logbook mode. In Logbook mode, entries that where marked DONE while
- logging was on (variable
- code{org-agenda-log-mode-items}. When called with a
- kbd{C-u C-u}, show only logging information, nothing else.
- kindex v
- kbd{C-u} prefix argument, even all archive files are included. To exit
- archives mode, press
- c
- item R
- Toggle Clockreport mode. In clockreport mode, the daily/weekly agenda will
- always show a table with the clocked times for the timespan and file scope
- covered by the current agenda view. The initial setting for this mode in new
- agenda buffers can be set with the variable
- tsubheading{Change display}
- kindex o
- c
- kindex w
- kindex y
- kbd{32 d} jumps to February 1st,
- kbd{200712 w} will jump to week 12 in
- 2007. If such a year specification has only one or two digits, it will
- be mapped to the interval 1938-2037.
- kindex D
- ref{Weekly/daily agenda}.
- kindex G
- code{org-agenda-use-time-grid} and
- c
- item r
- Recreate the agenda buffer, for example to reflect the changes
- after modification of the time stamps of items with S-
- key{right}. When the buffer is the global TODO list, a prefix
- argument is interpreted to create a selective list for a specific TODO
- keyword.
- item g
- Same as
- c
- kindex C-x C-s
- itemx C-x C-s
- Save all Org buffers in the current Emacs session.
- kindex
- item
- code{org-agenda-ndays} days. For example, if
- the display covers a week, switch to the following week. With prefix
- arg, go forward that many times
- c
- key{left}
- key{left}
- Display the previous dates.
- kindex .
- c
- item C-c C-x C-c
- Invoke column view (
- code{#+COLUMNS} line, or from the default variable
- tsubheading{Secondary filtering and query editing}
- cindex tag filtering, in agenda
- cindex query editing, in agenda
- item /
- Filter the current agenda view with respect to a tag and/or effort estimates.
- The difference between this and a custom agenda commands is that filtering is
- very fast, so that you can switch quickly between different filters without
- having to recreate the agenda.
- You will be prompted for a tag selection letter. Pressing
- emph{do} have the tag. A second
- kbd{+} or
- kbd{+} or kbd{/}, you can also immediately use the
- lisp
- (setq org-global-properties
- '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
- kbd{<},
- kbd{=}, and then the one-digit index of an effort estimate in
- your array of allowed values, where
- kbd{<} will be assumed.
- item \
- Narrow the current agenda filter by an additional condition. When called with
- prefix arg, remove the entries that
- kbd{+} or
- kbd{/} command.
- kindex ]
- {
- }
- {
- i{search view} (
- kbd{[} and kbd{
- kbd{
- samp{+}, indicating that this search term
- i{must not} occur/match in the entry for it to be
- selected.
- cindex remote editing, from agenda
- c
- cindex remote editing, undo
- item C-_
- Undo a change due to a remote editing command. The change is undone
- both in the agenda buffer and in the remote buffer.
- kindex t
- c
- item C-k
- Delete the current agenda item along with the entire subtree belonging
- to it in the original Org file. If the text to be deleted remotely
- is longer than one line, the kill needs to be confirmed by the user. See
- variable
- c
- item a
- Toggle the ARCHIVE tag for the current headline.
- kindex A
- emph{Archive
- Sibling}.
- kindex $
- c
- item T
- Show all tags associated with the current item. This is useful if you have
- turned off
- c
- item :
- Set tags for the current headline. If there is an active region in the
- agenda, change a tag for all headings in the region.
- kindex ,
- key{SPC}, the priority cookie
- is removed from the entry.
- kindex P
- c
- kindex S-
- item +
- key{up}
- Increase the priority of the current item. The priority is changed in
- the original buffer, but the agenda is not resorted. Use the
- c
- kindex S-
- item -
- key{down}
- Decrease the priority of the current item.
- kindex C-c C-a
- c
- item C-c C-s
- Schedule this item
- kindex C-c C-d
- c
- item k
- Agenda actions, to set dates for selected items to the cursor date.
- This command also works in the calendar! The command prompts for an
- additonal key:
- r{Mark the entry at point for action. You can also make entries}
- kbd{C-c C-x C-k}.}
- d
- r{Schedule the marked entry at the date at point.}
- r code{org-remember} with the cursor date as default date.}
- kbd{r} afterwards to refresh the agenda and see the effect of the
- command.
- kindex S-
- item S-
- kbd{3 6 5 S-
- kbd{r} key to update the buffer.
- kindex S-
- item S-
- c
- item >
- Change the time stamp associated with the current line to today.
- The key kbd{S-.}
- on my keyboard.
- kindex I
- c
- item O
- Stop the previously started clock.
- kindex X
- kindex J
- tsubheading{Calendar commands}
- kindex c
- c
- c
- kindex i
- kbd{i d} etc. would do in the calendar.
- The date is taken from the cursor position.
- kindex M
- c
- item S
- Show sunrise and sunset times. The geographical location must be set
- with calendar variables, see documentation of the Emacs calendar.
- kindex C
- c
- item H
- Show holidays for three month around the cursor date.
- tsubheading{Exporting to a file}
- item C-x C-w
- cindex agenda views, exporting
- Write the agenda view to a file. Depending on the extension of the
- selected file name, the view will be exported as HTML (extension
- file{.htm}), Postscript (extension
- code{org-agenda-exporter-settings} to set options for
- file{htmlize} to be used during export.
- kindex q
- c
- cindex agenda files, removing buffers
- end table
- section Custom agenda views
- cindex agenda views, custom
- Custom agenda commands serve two purposes: to store and quickly access
- frequently used TODO and tags searches, and to create special composite
- agenda buffers. Custom agenda commands will be accessible through the
- dispatcher (
- menu
- * Storing searches:: Type once, use often
- * Block agenda:: All the stuff you need in a single buffer
- * Setting Options:: Changing the rules
- * Exporting Agenda Views:: Writing agendas to files
- * Using the agenda elsewhere:: Using agenda information in other programs
- node Storing searches, Block agenda, Custom agenda views, Custom agenda views
- kindex C-c a C
- Custom commands are configured in the variable
- kbd{C-c a C}. You can also directly set it with
- Emacs Lisp in
- lisp
- end group
- noindent
- The initial string in each entry defines the keys you have to press
- after the dispatcher command
- footnote{You can provide a description for a prefix key by
- inserting a cons cell with the prefix and the description.}. The second
- parameter is the search type, followed by the string or regular
- expression to be used for the matching. The example above will
- therefore define:
- kbd
- samp{WAITING} as the TODO
- keyword
- item C-c a u
- as a global tags search for headlines marked
- samp{:urgent:}
- kbd{C-c a u}, but limiting the search to
- headlines that are also TODO items
- kbd{C-c a u}, but only in the current buffer and
- displaying the result as a sparse tree
- samp{FIXME}
- kbd{l}, kbd{k}) to select a name (Lisa,
- Peter, or Kim) as additional tag to match.
- node Block agenda, Setting Options, Storing searches, Custom agenda views
- cindex block agenda
- emph{several} commands, each of which creates a block in
- the agenda buffer. The available commands include
- kbd{C-c a a}),
- kbd{C-c a t}), and the
- matching commands discussed above: code{tags}, and
- lisp
- end group
- noindent
- This will define
- samp{home}, and also all lines tagged with
- kbd{C-c a o} provides a similar view for office tasks.
- subsection Setting options for custom commands
- code{org-agenda-custom-commands}. For example:
- group
- (setq org-agenda-custom-commands
- '(("w" todo "WAITING"
- ((org-agenda-sorting-strategy '(priority-down))
- (org-agenda-prefix-format " Mixed: ")))
- ("U" tags-tree "+boss-urgent"
- ((org-show-following-heading nil)
- (org-show-hierarchy-above nil)))
- ("N" search ""
- ((org-agenda-files '("~org/notes.org"))
- (org-agenda-text-search-extra-files nil)))))
- end lisp
- kbd{C-c a w} command will sort the collected entries only by
- priority, and the prefix format is modified to just say
- kbd{C-c a U} will now turn out ultra-compact, because neither the
- headline hierarchy above the match, nor the headline following the match
- will be shown. The command
- code{org-agenda-custom-commands} has two separate spots for setting
- options. You can add options that should be valid for just a single
- command in the set, and options that should be valid for all commands in
- the set. The former are just added to the command entry, the latter
- must come after the list of command entries. Going back to the block
- agenda example (
- kbd{C-c a h} commands to
- code{priority-up}. This would look like this:
- group
- (setq org-agenda-custom-commands
- '(("h" "Agenda and Home-related tasks"
- ((agenda)
- (tags-todo "home")
- (tags "garden"
- ((org-agenda-sorting-strategy '(priority-up)))))
- ((org-agenda-sorting-strategy '(priority-down))))
- ("o" "Agenda and Office-related tasks"
- ((agenda)
- (tags-todo "work")
- (tags "office")))))
- end lisp
- As you see, the values and parenthesis setting is a little complex.
- When in doubt, use the customize interface to set this variable - it
- fully supports its structure. Just one caveat: When setting options in
- this interface, the
- node Exporting Agenda Views, Using the agenda elsewhere, Setting Options, Custom agenda views
- cindex agenda views, exporting
- If you are away from your computer, it can be very useful to have a
- printed version of some agenda views to carry around. Org mode can
- export custom agenda views as plain text, HTML
- file{htmlize.el}.} postscript, and iCalendar
- files. If you want to do this only occasionally, use the command
- kbd
- item C-x C-w
- cindex agenda views, exporting
- Write the agenda view to a file. Depending on the extension of the
- selected file name, the view will be exported as HTML (extension
- file{.htm}), Postscript (extension
- file{.ics}), or plain text (any other extension).
- Use the variable
- file{ps-print} and for
- lisp
- (setq org-agenda-exporter-settings
- '((ps-number-of-columns 2)
- (ps-landscape-mode t)
- (htmlize-output-type 'css)))
- end table
- If you need to export certain agenda views frequently, you can associate
- any custom agenda command with a list of output file names
- lisp
- end group
- file{.html}, Org mode will use the
- file{.ps},
- file{.ics}, iCalendar export is
- run export over all files that were used to construct the agenda, and
- limit the export to entries listed in the agenda now. Any other
- extension produces a plain ASCII file.
- The export files are
- emph{all} specified
- files in one step:
- kbd
- item C-c a e
- Export all agenda views that have export file names associated with
- them.
- lisp
- (setq org-agenda-custom-commands
- '(("X" agenda ""
- ((ps-number-of-columns 2)
- (ps-landscape-mode t)
- (org-agenda-prefix-format " [ ] ")
- (org-agenda-with-colors nil)
- (org-agenda-remove-tags t))
- ("theagenda.ps"))))
- noindent
- This command sets two options for the postscript exporter, to make it
- print in two columns in landscape format - the resulting page can be cut
- in two and then used in a paper agenda. The remaining settings modify
- the agenda prefix to omit category and scheduling information, and
- instead include a checkbox to check off items. We also remove the tags
- to make the lines compact, and we don't want to use colors for the
- black-and-white printer. Settings specified in
- code{org-agenda-custom-commands} take precedence.
- example
- emacs -f org-batch-store-agenda-views -kill
- noindent
- or, if you need to modify some parameters
- example
- emacs -eval '(org-batch-store-agenda-views \
- org-agenda-ndays 30 \
- org-agenda-start-day "2007-11-01" \
- org-agenda-include-diary nil \
- org-agenda-files (quote ("~/org/project.org")))' \
- -kill
- noindent
- which will create the agenda views restricted to the file
- node Using the agenda elsewhere, , Exporting Agenda Views, Custom agenda views
- cindex agenda, pipe
- code{org-batch-agenda}, that produces an agenda view and sends it as
- ASCII text to STDOUT. The command takes a single string as parameter.
- If the string has length 1, it is used as a key to one of the commands
- you have configured in
- kbd{C-c a}. For example, to directly print the
- current TODO list, you could use
- end example
- If the parameter is a string with 2 or more characters, it is used as a
- tags/todo match string. For example, to print your local shopping list
- (all items with the tag
- samp{NewYork}), you could use
- end example
- example
- emacs -batch -l ~/.emacs \
- -eval '(org-batch-agenda "a" \
- org-agenda-ndays 30 \
- org-agenda-include-diary nil \
- org-agenda-files (quote ("~/org/project.org")))' \
- | lpr
- noindent
- which will produce a 30 day agenda, fully restricted to the Org file
- code{org-batch-agenda-csv} to get a comma-separated
- list of values for each agenda item. Each line in the output will
- contain a number of fields separated by commas. The fields in a line
- are:
- r{The category of the item}
- head
- r{The type of the agenda entry, can be}
- todo
- r{selected in tags match}
- diary
- r{a deadline}
- scheduled
- r{appointment, selected by timestamp}
- closed
- r{warning about nearing deadline}
- past-scheduled
- r{entry has date block including date}
- todo
- r{All tags including inherited ones, separated by colons}
- date
- r{The time, like 15:00-16:50}
- extra
- r{The priority letter if any was given}
- priority-n
- end example
- example
- {$cmd 2>/dev/null
- {
- # get the individual values
- ($category,$head,$type,$todo,$tags,$date,$time,$extra,
- $priority_l,$priority_n) = split(/,/,$line);
- # proccess and print
- print "[ ] $head\n";
- end group
- node Agenda column view, , Custom agenda views, Agenda Views
- cindex column view, in agenda
- pxref{Column view}) is normally used to view and edit
- properties embedded in the hierarchical structure of an Org file. It can be
- quite useful to use column view also from the agenda, where entries are
- collected by certain criteria.
- kbd
- item C-c C-x C-c
- Turn on column view in the agenda.
- enumerate
- code{COLUMNS} format to use. Since the
- entries in the agenda are collected from different files, and different files
- may have different
- code{org-overriding-columns-format} is
- currently set, and if yes takes the format from there. Otherwise it takes
- the format associated with the first item in the agenda, or, if that item
- does not have a specific format (defined in a property, or in it's file), it
- uses
- item
- If any of the columns has a summary type defined (
- code{CLOCKSUM} property. Org will then sum the
- values displayed in the agenda. In the daily/weekly agenda, the sums will
- cover a single day, in all other views they cover the entire block. It is
- vital to realize that the agenda may show the same entry
- emph{parent} and it's
- item
- When the column view in the agenda shows the
- kbd{R} in
- the agenda).
- node Embedded LaTeX, Exporting, Agenda Views, Top
- cindex
- cindex La
- TeX{}TeX{}
- is a macro system based on Donald E. Knuth's
- TeX{}'' are really from
- TeX{} code into its
- files, because many academics are used to reading La
- TeX{} macros and code in any special way.
- If you observe a few conventions, Org mode knows how to find it and what
- to do with it.
- end menu
- section Math symbols
- cindex TeX macros
- You can use Lasamp{\alpha}
- to indicate the Greek letter, or
- samp{\} and maybe a
- few letters, and press key{TAB}} to see possible completions.
- Unlike La
- example
- Angles are written as Greek letters \alpha, \beta and \gamma.
- pxref{HTML export}), these symbols are translated
- into the proper syntax for HTML, for the above examples this is
- samp{→}, respectively. If you need such a symbol
- inside a word, terminate it like this: {
- node Subscripts and superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
- cindex subscript
- TeX{}, samp{_} are used to indicate super-
- and subscripts. Again, these can be used without embedding them in
- math-mode delimiters. To increase the readability of ASCII text, it is
- not necessary (but OK) to surround multi-character sub- and superscripts
- with curly braces. For example
- {sun
- end example
- To avoid interpretation as raised or lowered text, you can quote
- samp{_} with a backslash: samp{\^}.
- During HTML export (
- code{<sub>} and
- node LaTeX fragments, Processing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
- cindex LaTeX fragments
- With symbols, sub- and superscripts, HTML is pretty much at its end when
- it comes to representing mathematical formulas
- TeX{} or ASCII representations of
- formulas into MathML. So for the time being, converting formulas into
- images seems the way to go.}. More complex expressions need a dedicated
- formula processor. To this end, Org mode can contain arbitrary La
- footnote{The La
- TeX{} fragments but include these
- fragments directly into the La
- TeX{} installation. You also
- need the
- url{http://sourceforge.net/projects/dvipng/}. The La
- code{org-format-latex-header}.
- La
- TeX{} source code:
- bullet
- code{\begin} statement appears on a new line, preceded by only
- whitespace.
- TeX{} math delimiters. To avoid conflicts with
- currency specifications, single
- samp{$} characters with no whitespace in
- between, and if the closing
- samp{\(...\)} as inline math delimiters.
- noindent For example:
- {equation
- {b
- {equation
- {2{2
- end example
- code{org-format-latex-options} to deselect the
- ones you do not wish to have interpreted by the La
- node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
- cindex LaTeX fragments, preview
- La
- table
- kindex C-c C-x C-l
- TeX{} fragment at point and overlay it
- over the source code. If there is no fragment at point, process all
- fragments in the current entry (between two headlines). When called
- with a prefix argument, process the entire subtree. When called with
- two prefix arguments, or when the cursor is before the first headline,
- process the entire buffer.
- item C-c C-c
- Remove the overlay preview images.
- pxref{HTML export}), all La
- lisp
- (setq org-export-with-LaTeX-fragments t)
- node CDLaTeX mode, , Processing LaTeX fragments, Embedded LaTeX
- cindex CDLaTeX
- CDLaTeX mode is a minor mode that is normally used in combination with a
- major La
- file{cdlatex.el} and
- url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
- Don't use CDLaTeX mode itself under Org mode, but use the light
- version
- code{M-x org-cdlatex-mode}, or for all
- Org files with
- end lisp
- When this mode is enabled, the following features are present (for more
- details see the documentation of CDLaTeX mode):
- bullet
- {
- kbd{C-c
- item
- key{TAB}
- The
- TeX{} fragment
- code{org-inside-LaTeX-fragment-p}.}. For example,
- code{fr} to {{
- key{TAB} will get you into
- the second brace. Even outside fragments,
- samp{equ} at the beginning of a line and press
- code{equation} environment.
- To get a list of all abbreviations, type
- item
- kindex ^
- Pressing kbd{^} inside a La
- key{TAB} to move
- out of the braces, and if the braces surround only a single character or
- macro, they are removed again (depending on the variable
- item
- kbd{`} followed by a character inserts math
- macros, also outside La
- item
- kbd{'} followed by another character modifies
- the symbol before point with an accent or a font. If you wait more than
- 1.5 seconds after the backquote, a help window will pop up. Character
- modification will work only inside La
- end itemize
- chapter Exporting
- TeX{} export lets
- you use Org mode and its structured editing functions to easily create
- La
- code{transient-mark-mode} is
- enabled (default in Emacs 23).
- end menu
- section Markup rules
- When exporting Org mode documents, the exporter tries to reflect the
- structure of the document as accurately as possible in the back-end. Since
- export targets like HTML or La
- menu
- * Document title:: How the document title is determined
- * Headings and sections:: The main structure of the exported document
- * Table of contents:: If, where, how to create a table of contents
- * Initial text:: Text before the first headline
- * Lists:: Plain lists are exported
- * Paragraphs:: What determines beginning and ending
- * Literal examples:: Source code and other examples
- * Include files:: Include the contents of a file during export
- * Tables exported:: Tables are exported richly
- * Inlined images:: How to inline images during export
- * Footnote markup::
- * Emphasis and monospace:: To bold or not to bold
- * TeX macros and LaTeX fragments:: Create special, rich export.
- * Horizontal rules:: A line across the page
- * Comment lines:: Some lines will not be exported
- node Document title, Headings and sections, Markup rules, Markup rules
- cindex document title, markup rules
- example
- #+TITLE: This is the title of the document
- noindent
- If this line does not exist, the title is derived from the first non-empty,
- non-comment line in the buffer. If no such line exists, or if you have
- turned off exporting of the text before the first headline (see below), the
- title will be the file name without extension.
- If you are exporting only a subtree by marking is as the region, the heading
- of the subtree will become the title of the document. If the subtree has a
- property
- node Headings and sections, Table of contents, Document title, Markup rules
- cindex headings and sections, markup rules
- The outline structure of the document as described in
- code{org-headline-levels}, or on a
- per file basis with a line
- end example
- subheading Table of contents
- code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
- location. The depth of the table of contents is by default the same as the
- number of headline levels, but you can choose a smaller number or turn off
- the table of contents entirely by configuring the variable
- example
- #+OPTIONS: toc:2 (only to two levels in TOC)
- #+OPTIONS: toc:nil (no TOC at all)
- node Initial text, Lists, Table of contents, Markup rules
- cindex text before first headline, markup rules
- TeX{} code, use the special constructs
- described below in the sections for the individual exporters.
- Some people like to use the space before the first headline for setup and
- internal links and therefore would like to control the exported text before
- the first headline in a different way. You can do so by setting the variable
- code{t}. On a per-file
- basis, you can get the same effect with
- noindent
- If you still want to have some text before the first headline, use the
- example
- #+OPTIONS: skip:t
- #+TEXT: This text will go before the *first* headline.
- #+TEXT: [TABLE-OF-CONTENTS]
- #+TEXT: This goes between the table of contents and the first headline
- node Lists, Paragraphs, Initial text, Markup rules
- cindex lists, markup rules
- Plain lists as described in
- node Paragraphs, Literal examples, Lists, Markup rules
- cindex paragraphs, markup rules
- Paragraphs are separated by at least one empty line. If you need to enforce
- a line break within a paragraph, use
- example
- #+BEGIN_VERSE
- Great clouds overhead
- Tiny black birds rise and fall
- Snow covers Emacs
- -- AlexSchroeder
- #+END_VERSE
- example
- #+BEGIN_QUOTE
- Everything should be made as simple as possible,
- but not any simpler -- Albert Einstein
- #+END_QUOTE
- node Literal examples, Include files, Paragraphs, Markup rules
- cindex literal examples, markup rules
- cindex #+BEGIN_EXAMPLE
- end example
- For simplicity when using small examples, you can also start the example
- lines with a colon:
- end example
- footnote{Currently this works only for
- the HTML back-end, and requires the
- samp{src} block, where you also need to
- specify the name of the major mode that should be used to fontify the
- example:
- example
- #+BEGIN_SRC emacs-lisp
- (defun org-xor (a b)
- "Exclusive or."
- (if a (not b) b))
- #+END_SRC
- code{example} and in code{-n}
- switch to the end of the
- code{+n} switch, the numbering from the previous
- numbered snippet will be continued in the current one. In literal examples,
- Org will interpret strings like
- code{[[((name))]]}. In HTML, hoovering the
- mouse over such a link will remote-highlight the corresponding code line,
- which is kind of cool. If the example/src snippet is numbered, you can also
- add a i{removed} from the source code
- and the links will be footnote{If you want to explain the use of
- such labels themelves in an example, you can use the
- example
- #+BEGIN_SRC emacs-lisp -n -r
- (save-excursion
- (goto-char (point-min)) ((jump))
- #+END SRC
- In [[((jump))][line ((jump))]] we go to .....
- table
- kindex C-c '
- kbd{C-c '} again
- samp{*} or
- kbd{C-c '}, and
- also for export.}. Fixed-width
- regions (where each line starts with a colon followed by a space) will be
- edited using footnote{You may select a different-mode with
- the variable
- kindex C-c l
- code{org-store-link} while editing a source code example in a
- temporary buffer created with
- samp{((label))} at
- the end of the current line. Then the label is stored as a link, for
- retrieval with
- end table
- subheading Include files
- cindex #+INCLUDE
- end example
- The optional second and third parameter are the markup (
- samp{example}, or samp{src}, the
- language for formatting the contents. The markup is optional, if it is not
- given, the text will be assumed to be in Org mode format and will be
- processed normally. The include line will also allow additional keyword
- parameters code{:prefix} to specify prefixes for the
- first line and for each following line. For example, to include a file as an
- item, use
- end example
- kbd
- item C-c '
- Visit the include file at point.
- node Tables exported, Inlined images, Include files, Markup rules
- cindex tables, markup rules
- Both the native Org mode tables (
- file{table.el} package will be exported properly. For Org mode tables,
- the lines before the first horizontal separator line will become table header
- lines. You can use the following lines somewhere before the table to asssign
- a caption and a label for cross references:
- end example
- subheading Inlined Images
- code{[[./img/a.jpg]]}. If you wish to
- define a caption for the image and maybe a label for internal cross
- references, you can use (before, but close to the link)
- end example
- You may also define additional attributes for the figure. As this is
- backend-specific, see the sections about the individual backends for more
- information.
- subheading Footnote markup
- cindex
- ref{Footnotes} will be exported by
- all backends. Org does allow multiple references to the same note, and
- different backends support this to varying degree.
- subheading Emphasis and monospace
- cindex bold text, markup rules
- cindex verbatim text, markup rules
- cindex strike-through text, markup rules
- You can make words i{/italic/}, _underlined_,
- code{~verbatim~}, and, if you must,
- node TeX macros and LaTeX fragments, Horizontal rules, Emphasis and monospace, Markup rules
- TeX{} macros and La
- cindex LaTeX fragments, markup rules
- cindex HTML entities
- TeX{}-like syntax is used to specify special characters. Where possible,
- these will be transformed into the native format of the exporter back-end.
- Strings like code{α} in the HTML
- output, and as TeX{} output. Similarly,
- code{ } in HTML and TeX{}.
- This applies for a large number of entities, with names taken from both HTML
- and Lacode{org-html-entities} for the complete
- list. If you are unsure about a name, use key{TAB}} for completion
- after having types the backslash and maybe a few characters
- (
- TeX{} fragments are converted into images for HTML export, and they are
- written literally into the Laref{Embedded LaTeX}.
- Finally, samp{--},
- samp{...} are all converted into special commands creating hyphens of
- different lengths or a compact set of dots.
- subheading Horizontal rules
- samp{<hr/>} in HTML).
- subheading Comment lines
- cindex exporting, not
- Lines starting with
- samp{COMMENT} will never be exported. Finally, regions surrounded by
- samp{#+END_COMMENT} will not be exported.
- kbd
- item C-c ;
- Toggle the COMMENT keyword at the beginning of an entry.
- node Selective export, Export options, Markup rules, Exporting
- cindex export, selective by tags
- You may use tags to select the parts of a document that should be exported,
- or to exclude parts from export. This behavior is governed by two variables:
- code{org-export-exclude-tags}.
- Org first checks if any of the
- noindent
- If none of the select tags is found, the whole buffer will be selected for
- export.
- emph{exclude} tags will
- be removed from the export buffer.
- section Export options
- cindex completion, of option keywords
- The exporter recognizes special lines in the buffer which provide
- additional information. These lines may be put anywhere in the file.
- The whole set of lines can be inserted into the buffer with
- samp{#+} and then use key{TAB}} completion
- (
- table
- kindex C-c C-e t
- end table
- cindex #+AUTHOR:
- cindex #+EMAIL:
- cindex #+TEXT:
- cindex #+LINK_UP:
- cindex #+EXPORT_SELECT_TAGS:
- example
- #+TITLE: the title to be shown (default is the buffer name)
- #+AUTHOR: the author (default taken from
- code{format-time-string}
- #+EMAIL: his/her email address (default from
- samp{en} (
- end example
- footnote{If you want to configure many options
- this way, you can use several OPTIONS lines.} form to specify export settings. Here
- you can:
- cindex section-numbers
- cindex line-break preservation
- cindex fixed-width sections
- cindex
- cindex footnotes
- cindex emphasized text
- TeX{} macros
- TeX{} fragments
- cindex time info, in export
- r{set the number of headline levels for export}
- num:
- r{turn on/off table of contents, or set level limit (integer)}
- \n:
- r{turn on/off quoted HTML tags}
- ::
- r{turn on/off tables}
- ^: TeX{}-like syntax for sub- and superscripts. If}
- {code{a_}} will be interpreted, but}
- code{a_b} will be left as it is.}
- -:
- r{turn on/off footnotes like this[1].}
- todo:
- r{turn on/off priority cookies}
- tags: code{not-in-toc}}
- <:
- r{turn on/off emphasized text (bold, italic, underlined)}
- TeX: TeX{} macros in plain text}
- LaTeX: TeX{} fragments}
- skip:
- r{turn on/off inclusion of author name/email into exported file}
- creator:
- r{turn on/off inclusion creation time into exported file}
- d:
- end example
- These options take effect in both the HTML and La
- code{TeX} and code{t} and
- TeX{} export.
- When exporting only a single subtree by selecting it with
- code{EXPORT_FILE_NAME},
- code{EXPORT_TEXT}, and
- node The export dispatcher, ASCII export, Export options, Exporting
- cindex dispatcher, for export commands
- All export commands can be reached using the export dispatcher, which is a
- prefix key that prompts for an additional key specifying the command.
- Normally the entire file is exported, but if there is an active region that
- contains one outline tree, the first heading is used as document title and
- the subtrees are exported.
- kbd
- item C-c C-e
- Dispatcher for export and publishing commands. Displays a help-window
- listing the additional key(s) needed to launch an export or publishing
- command. The prefix arg is passed through to the exporter. A double prefix
- footnote{To make this behavior the default, customize
- the variable
- kindex C-c C-e v
- kbd{C-c C-e}, but only export the text that is currently visible
- (i.e. not hidden by outline visibility).
- item C-u C-u C-c C-e
- Call an the exporter, but reverse the setting of
- end table
- section ASCII export
- cindex region, active
- cindex transient-mark-mode
- kbd
- item C-c C-e a
- Export as ASCII file. For an org file
- file{myfile.txt}. The file will be overwritten without
- warning. If there is an active region
- code{transient-mark-mode} to be turned on}, only the region will be
- exported. If the selected region is a single tree
- kbd{C-c }.}, the tree head will
- become the document title. If the tree head entry has or inherits an
- kindex C-c C-e v a
- end table
- example
- end example
- node HTML export, LaTeX and PDF export, ASCII export, Exporting
- cindex HTML export
- Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
- HTML formatting, in ways similar to John Gruber's
- menu
- * HTML Export commands:: How to invoke HTML export
- * Quoting HTML tags:: Using direct HTML in Org mode
- * Links:: Transformation of links for HTML
- * Images in HTML export::
- * CSS support:: Changing the appearance of the output
- * Javascript support:: Info and Folding in a web browser
- node HTML Export commands, Quoting HTML tags, HTML export, HTML export
- cindex region, active
- cindex transient-mark-mode
- kbd
- item C-c C-e h
- Export as HTML file file{myfile.org},
- the ASCII file will be
- footnote{this requires
- footnote{To select the
- current subtree, use
- code{EXPORT_FILE_NAME}
- property, that name will be used for the export.
- item C-c C-e b
- Export as HTML file and immediately open it with a browser.
- item C-c C-e H
- Export to a temporary buffer, do not create a file.
- item C-c C-e R
- Export the active region to a temporary buffer. With a prefix argument, do
- not produce the file header and footer, but just the plain HTML section for
- the region. This is good for cut-and-paste operations.
- kindex C-c C-e v b
- kindex C-c C-e v R
- item C-c C-e v b
- item C-c C-e v R
- Export only the visible part of the document.
- item M-x org-replace-region-by-HTML
- Replace the active region (assumed to be in Org mode syntax) by HTML
- code.
- cindex headline levels, for exporting
- In the exported version, the first 3 outline levels will become headlines,
- defining a general document structure. Additional levels will be exported as
- itemized lists. If you want that transition to occur at a different level,
- specify it with a numeric prefix argument. For example,
- kbd{C-2 C-c C-e b}
- noindent
- creates two levels of headings and does the rest as items.
- subsection Quoting HTML tags
- Plain samp{>} are always transformed to
- samp{>} in HTML export. If you want to include simple HTML tags
- which should be interpreted as such, mark them with
- samp{<b>bold text</b>}. Note that this really works only for
- simple tags. For more extensive HTML that should be copied verbatim to
- the exported file use either
- end example
- cindex #+BEGIN_HTML
- end example
- subsection Links
- cindex internal links, in HTML export
- pxref{Internal links}) will continue to work in HTML.
- Automatic links created by radio targets (
- file{.org}
- files will be translated into HTML links under the assumption that an HTML
- version also exists of the linked file. For information related to linking
- files while publishing them to a publishing directory see
- code{#+ATTR_HTML} line to define attributes that wil be added to the
- code{<img>} tags. Here is an example that sets
- code{title} attributes for an inlined image:
- end example
- subsection Images
- cindex inlining images in HTML
- HTML export can inline images given as links in the Org file, and
- it can make an image the clickable part of a link. By
- default
- code{org-export-html-inline-images}}, images are inlined if a link does
- not have a description. So
- samp{[[file:myimg.jpg][the image]]} will just produce a link
- code{file:} link or a
- example
- [[file:highres.jpg][file:thumb.jpg]]
- noindent
- and you could use
- node CSS support, Javascript support, Images in HTML export, HTML export
- cindex CSS, for HTML export
- example
- .todo
- r{the DONE keyword}
- .timestamp
- r{keyword associated with a time stamp, like SCHEDULED}
- .tag
- r{target for links}
- div.figure
- r{the line number in a code example}
- .code-highlighted
- end example
- Each exported files contains a compact default style that defines these
- classes in a basic way
- code{org-export-html-style-default}, which you should not modify. To turn
- inclusion of these defaults off, customize
- code{org-export-html-style}
- (for Org-wide settings) and
- example
- #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
- noindent
- For longer style definitions, you can use several such lines. You could also
- directly write a code{</style>} section in this way, without
- referring to an external file.
- c FIXME: Talk about links and targets.
- subsection Javascript supported display of web pages
- emph{Info}-like mode where each section is displayed separately and
- navigation can be done with the kbd{p} keys (and some other keys
- as well, press
- emph{folding} view much like Org provides inside Emacs.
- The script is available at
- url{http://orgmode.org/worg/code/org-info-js/org-info.js.html}. We are
- serving the script from our site, but if you use it a lot, you might not want
- to be dependent on
- file{org-jsinfo.el} module
- gets loaded. It should be loaded by default, but you can try
- key{RET} org-modules
- example
- #+INFOJS_OPT: view:info toc:nil
- noindent
- If this line is found, the HTML header will automatically contain the code
- needed to invoke the script. Using the line above, you can set the following
- viewing options:
- r{The path to the script. The default is to grab the script from}
- url{http://orgmode.org/org-info.js}, but you might want to have}
- samp{../scripts/org-info.js}.}
- view:
- r{Info-like interface with one section per page.}
- overview
- r{Folding interface, starting with all headlines visible.}
- showall
- r{Maximum headline level that will still become an independent}
-
- r{code{H} switch in
- r{If this is smaller than in
- r{info/folding section can still contain children headlines.}
- toc: emph{initially} be visible?}
- code{nil}, you can always get to the toc with
- r{The depth of the table of contents. The defaults are taken from}
- code{org-headline-levels} and
- r{Does the css of the page specify a fixed position for the toc?}
-
- r{Should there be short contents (children) in each section?}
- mouse:
- r{samp{#cccccc}.}
- buttons: code{nil} (the}
-
- end example
- You can choose default values for these options by customizing the variable
- code{org-export-html-use-infojs}.
- section LaTeX and PDF export
- cindex PDF export
- Org mode contains a La
- file{hyperref} to implement links and cross
- references, the PDF output file will be fully linked.
- end menu
- subsection LaTeX export commands
- cindex active region
- table
- kindex C-c C-e l
- TeX{} file
- file{myfile.org}, the ASCII file will be
- footnote{this
- requires
- footnote{To select the
- current subtree, use
- code{EXPORT_FILE_NAME}
- property, that name will be used for the export.
- item C-c C-e L
- Export to a temporary buffer, do not create a file.
- kindex C-c C-e v L
- item C-c C-e v L
- Export only the visible part of the document.
- TeX{} under the assumption that it was Org mode
- syntax before. This is a global command that can be invoked in any
- buffer.
- TeX{}
- code.
- item C-c C-e p
- Export as LaTeX and then process to PDF.
- item C-c C-e d
- Export as LaTeX and then process to PDF, then open the resulting PDF file.
- cindex headline levels, for exporting
- In the exported version, the first 3 outline levels will become
- headlines, defining a general document structure. Additional levels
- will be exported as description lists. The exporter can ignore them or
- convert them to a custom string depending on
- example
- end example
- node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
- TeX{} as described in
- TeX{} file. Furthermore, you can add special code
- that should only be present in La
- example
- #+LaTeX: Literal LaTeX code for export
- noindent or
- example
- #+BEGIN_LaTeX
- All lines between these markers are exported literally
- #+END_LaTeX
- node Sectioning structure, Tables in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
- cindex LaTeX class
- TeX{} output uses the class
- code{org-export-latex-default-class} or locally by adding an option like
- code{org-export-latex-classes}, where you can also define the sectioning
- structure for each class, as well as defining additonal classes.
- subsection Tables in LaTeX export
- pxref{Tables exported}). You can also use the
- example
- #+CAPTION: A long table
- #+LABEL: tbl:long
- #+ATTR_LaTeX: longtable
- | ..... | ..... |
- | ..... | ..... |
- node Images in LaTeX export, , Tables in LaTeX export, LaTeX and PDF export
- cindex images, inline in LaTeX
- samp{[[file:img.jpg]]} or
- code{\includegraphics} macro to insert the image. If you have specified a
- caption and/or a label as described in
- code{figure} environment and thus become a floating
- element. Finally, you can use an
- code{\includegraphics} macro.
- end example
- section XOXO export
- table
- kindex C-c C-e x
- file{myfile.html}.
- item C-c C-e v x
- Export only the visible part of the document.
- node iCalendar export, , XOXO export, Exporting
- cindex iCalendar export
- Some people like to use Org mode for keeping track of projects, but still
- prefer a standard calendar application for anniversaries and appointments.
- In this case it can be useful to have deadlines and other time-stamped items
- in Org files show up in the calendar application. Org mode can export
- calendar information in the standard iCalendar format. If you also want to
- have TODO entries included in the export, configure the variable
- footnote{See the variables
- code{org-icalendar-use-scheduled}.}. As categories, it will use the tags
- locally defined in the heading, and the file/tree category
- code{org-icalendar-categories}.}.
- The iCalendar standard requires each entry to have a globally unique
- identifier (UID). Org creates these identifiers during export. If you set
- the variable
- code{:ID:} property of the entry and re-used next time you report this
- entry. Since a single entry can give rise to multiple iCalendar entries (as
- a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
- prefixes to the UID, depending on what triggered the inclusion of the entry.
- In this way the UID remains unique, but a synchronization program can still
- figure out from which entry all the different instances originate.
- kbd
- item C-c C-e i
- Create iCalendar entries for the current file and store them in the same
- directory, using a file extension
- kindex C-c C-e I
- kbd{C-c C-e i}, but do this for all files in
- kindex C-c C-e c
- code{org-agenda-files} and write it to the file given by
- end table
- The export will honor SUMMARY, DESCRIPTION and LOCATION
- code{org-use-property-inheritance} accordingly.} properties if the selected
- entries have them. If not, the summary will be derived from the headline,
- and the description from the body (limited to
- node Publishing, Miscellaneous, Exporting, Top
- cindex publishing
- Org includesfile{org-publish.el} is not distributed with
- Emacs 21, if you are still using Emacs 21, you need you need to download
- this file separately.} a publishing management system that allows you to
- configure automatic HTML conversion of
- emph{org-publish}. You can
- also configure org-publish to automatically upload your exported HTML
- pages and related attachments, such as images and source code files, to
- a web server. Org-publish turns Org into a web-site authoring tool.
- You can also use Org-publish to convert files into La
- TeX{} conversion so that files are available in both
- formats on the serverTeX{} files on a server are not
- that helpful, you surely want to perform further conversion on them --
- e.g. convert them to
- menu
- * Configuration:: Defining projects
- * Sample configuration:: Example projects
- * Triggering publication:: Publication commands
- node Configuration, Sample configuration, Publishing, Publishing
- menu
- * Project alist:: The central configuration variable
- * Sources and destinations:: From here to there
- * Selecting files:: What files are part of the project?
- * Publishing action:: Setting the function doing the publishing
- * Publishing options:: Tweaking HTML export
- * Publishing links:: Which links keep working after publishing?
- * Project page index:: Publishing a list of project files
- node Project alist, Sources and destinations, Configuration, Configuration
- code{org-publish-project-alist}
- cindex projects, for publishing
- Org-publish is configured almost entirely through setting the value of
- one variable, called
- lisp
- ("project-name" :property value :property value ...)
- end lisp
- In both cases, projects are configured by specifying property values.
- A project defines the set of files that will be published, as well as
- the publishing configuration to use when publishing those files. When
- a project takes the second form listed above, the individual members
- of the ``components'' property are taken to be components of the
- project, which group together files requiring different publishing
- options. When you publish such a ``meta-project'' all the components
- will also publish. The
- node Sources and destinations, Selecting files, Project alist, Configuration
- cindex directories, for publishing
- Most properties are optional, but some should always be set. In
- particular, org-publish needs to know where to look for source files,
- and where to put published files.
- columnfractions 0.3 0.7
- code{:base-directory}
- item
- tab Directory (possibly remote) where output files will be published.
- code{:preparation-function}
- code{make} for updating files to be published.
- code{:completion-function}
- end multitable
- node Selecting files, Publishing action, Sources and destinations, Configuration
- cindex files, selecting for publishing
- By default, all files with extension
- multitable
- item
- tab Extension (without the dot!) of source files. This actually is a
- regular expression.
- code{:exclude}
- item
- tab List of files to be included regardless of
- code{:exclude}.
- node Publishing action, Publishing options, Selecting files, Configuration
- cindex action, for publishing
- Publishing means that a file is copied to the destination directory and
- possibly transformed in the process. The default transformation is to export
- Org files as HTML files, and this is done by the function
- pxref{HTML
- export}). But you also can publish your files in La
- code{org-publish-org-to-latex} instead, or as PDF files using
- multitable
- item
- tab Function executing the publication of a file. This may also be a
- list of functions, which will all be called in turn.
- code{:publishing-directory} property, and the name of the file
- to be published. It should take the specified file, make the necessary
- transformation (if any) and place the result into the destination folder.
- You can write your own publishing function, but
- code{org-publish-attachment}.
- subsection Options for the HTML/LaTeX exporters
- TeX{} exporters. In most cases, these properties correspond to user
- variables in Org. The table below lists these properties along
- with the variable they belong to. See the documentation string for the
- respective variable for details.
- columnfractions 0.32 0.68
- code{:link-up} code{org-export-html-link-up}
- code{:link-home} code{org-export-html-link-home}
- code{:language} code{org-export-default-language}
- code{:customtime} code{org-display-custom-times}
- code{:headline-levels} code{org-export-headline-levels}
- code{:section-numbers} code{org-export-with-section-numbers}
- code{:section-number-format} code{org-export-section-number-format}
- code{:table-of-contents} code{org-export-with-toc}
- code{:preserve-breaks} code{org-export-preserve-breaks}
- code{:archived-trees} code{org-export-with-archived-trees}
- code{:emphasize} code{org-export-with-emphasize}
- code{:sub-superscript} code{org-export-with-sub-superscripts}
- code{:special-strings} code{org-export-with-special-strings}
- code{:footnotes} code{org-export-with-footnotes}
- code{:drawers} code{org-export-with-drawers}
- code{:tags} code{org-export-with-tags}
- code{:todo-keywords} code{org-export-with-todo-keywords}
- code{:priority} code{org-export-with-priority}
- code{:TeX-macros} code{org-export-with-TeX-macros}
- code{:LaTeX-fragments} code{org-export-with-LaTeX-fragments}
- code{:skip-before-1st-heading} code{org-export-skip-text-before-1st-heading}
- code{:fixed-width} code{org-export-with-fixed-width}
- code{:timestamps} code{org-export-with-timestamps}
- code{:author-info} code{org-export-author-info}
- code{:creator-info} code{org-export-creator-info}
- code{:tables} code{org-export-with-tables}
- code{:table-auto-headline} code{org-export-highlight-first-table-line}
- code{:style-include-default} code{org-export-html-style-include-default}
- code{:style} code{org-export-html-style}
- code{:style-extra} code{org-export-html-style-extra}
- code{:convert-org-links} code{org-export-html-link-org-files-as-html}
- code{:inline-images} code{org-export-html-inline-images}
- code{:html-extension} code{org-export-html-extension}
- code{:html-table-tag} code{org-export-html-table-tag}
- code{:expand-quoted-html} code{org-export-html-expand}
- code{:timestamp} code{org-export-html-with-timestamp}
- code{:publishing-directory} code{org-export-publishing-directory}
- code{:preamble} code{org-export-html-preamble}
- code{:postamble} code{org-export-html-postamble}
- code{:auto-preamble} code{org-export-html-auto-preamble}
- code{:auto-postamble} code{org-export-html-auto-postamble}
- code{:author} code{user-full-name}
- code{:email} code{user-mail-address}
- code{:select-tags} code{org-export-select-tags}
- code{:exclude-tags} code{org-export-exclude-tags}
- code{org-export-with-*} variables have the same effect in
- both HTML and Lacode{:TeX-macros} and
- code{nil} and
- TeX{} export.
- When a property is given a value in
- pxref{Export
- options}), however, override everything.
- subsection Links between published files
- samp{[[file:foo.org][The foo]]} or simply
- pxref{Hyperlinks}). Upon publishing this link
- becomes a link to
- code{org-publish} to upload the related files, these links will work
- too. See
- multitable
- item
- tab Function to validate links
- noindent
- to define a function for checking link validity. This function must
- accept two arguments, the file name and a directory relative to which
- the file name is interpreted in the production environment. If this
- function returns
- code{org-publish-validate-link} which checks if the given
- file is part of any project in
- node Project page index, , Publishing links, Configuration
- cindex index, of published pages
- The following properties may be used to control publishing of an
- index of files or summary page for a given project.
- columnfractions 0.25 0.75
- code{:auto-index}
- item
- tab Filename for output of index. Defaults to
- file{index.html}).
- code{:index-title}
- item
- tab Plug-in function to use for generation of index.
- Defaults to
- end multitable
- section Sample configuration
- Below we provide two example configurations. The first one is a simple
- project publishing only a set of Org files. The second example is
- more complex, with a multi-component project.
- end menu
- subsection Example: simple publishing configuration
- This example publishes a set of Org files to the
- lisp
- (setq org-publish-project-alist
- '(("org"
- :base-directory "~/org/"
- :publishing-directory "~/public_html"
- :section-numbers nil
- :table-of-contents nil
- :style "<link rel=\"stylesheet\"
- href=\"../other/mystyle.css\"
- type=\"text/css\">")))
- node Complex example, , Simple example, Sample configuration
- file{~/org} and your
- publishable images in
- c
- end example
- lisp
- (setq org-publish-project-alist
- '(("orgfiles"
- :base-directory "~/org/"
- :base-extension "org"
- :publishing-directory "/ssh:user@@host:~/html/notebook/"
- :publishing-function org-publish-org-to-html
- :exclude "PrivatePage.org" ;; regexp
- :headline-levels 3
- :section-numbers nil
- :table-of-contents nil
- :style "<link rel=\"stylesheet\"
- href=\"../other/mystyle.css\" type=\"text/css\">"
- :auto-preamble t
- :auto-postamble nil)
- ("images"
- :base-directory "~/images/"
- :base-extension "jpg\\|gif\\|png"
- :publishing-directory "/ssh:user@@host:~/html/images/"
- :publishing-function org-publish-attachment)
- ("other"
- :base-directory "~/other/"
- :base-extension "css\\|el"
- :publishing-directory "/ssh:user@@host:~/html/other/"
- :publishing-function org-publish-attachment)
- ("website" :components ("orgfiles" "images" "other"))))
- node Triggering publication, , Sample configuration, Publishing
- table
- item C-c C-e C
- Prompt for a specific project and publish all files that belong to it.
- item C-c C-e F
- Publish only the current file.
- end table
- Org uses timestamps to track when a file has changed. The above
- functions normally only publish changed files. You can override this and
- force publishing of all files by giving a prefix argument.
- chapter Miscellaneous
- end menu
- section Completion
- TeX{} symbols
- cindex completion, of dictionary words
- cindex completion, of tags
- cindex completion, of link abbreviations
- TeX{} symbol completion
- cindex dictionary word completion
- cindex tag completion
- table
- kindex M-
- item M-
- itemize
- item
- At the beginning of a headline, complete TODO keywords.
- samp{\}, complete
- item
- After
- samp{[[*find this headline]]}.
- samp{:} in a headline, complete tags. The list of tags is taken
- from the variable
- samp{#+TAGS} in-buffer option,
- item
- After
- item
- After pxref{Link abbreviations}).
- samp{#+}, complete the special keywords like
- samp{OPTIONS} which set file-specific options for Org mode. When the
- option keyword is already complete, pressing key{TAB}} again
- will insert example settings for this keyword.
- samp{#+STARTUP: }, complete startup keywords,
- i.e. valid keys for this line.
- end itemize
- node Customization, In-buffer settings, Completion, Miscellaneous
- cindex customization
- cindex variables, for customization
- There are more than 180 variables that can be used to customize
- Org. For the sake of compactness of the manual, I am not
- describing the variables here. A structured overview of customization
- variables is available with
- code{Browse Org Group} from the
- pxref{In-buffer settings}).
- section Summary of in-buffer settings
- cindex special keywords
- Org mode uses special lines in the buffer to define settings on a
- per-file basis. These lines start with a
- kbd{C-c C-c} with the cursor still in the line to
- activate the changes immediately. Otherwise they become effective only
- when the file is visited again in a new Emacs session.
- kbd
- samp{#+ARCHIVE} line, or the end
- of the file. The first such line also applies to any entries before it.
- The corresponding variable is
- item #+CATEGORY:
- This line sets the category for the agenda file. The category applies
- for all subsequent lines until the next
- item #+COLUMNS: %25ITEM .....
- Set the default format for columns view. This format applies when
- columns view is invoked in location where no
- item #+CONSTANTS: name1=value1 ...
- Set file-local values for constants to be used in table formulas. This
- line set the local variable
- code{org-table-formula-constants}.
- item #+DRAWERS: NAME1 .....
- Set the file-local set of drawers. The corresponding global variable is
- item #+LINK: linkword replace
- These lines (several are allowed) specify link abbreviations.
- code{org-link-abbrev-alist}.
- item #+PROPERTY: Property_Name Value
- This line sets a default inheritance value for entries in the current
- buffer, most useful for specifying the allowed values of a property.
- kbd{C-c C-c} in a
- settings line, or when exporting), then the contents of this file are parsed
- as if they had been included in the buffer. In particlar, the file can be
- any other Org mode file with internal setup. You can visit the file the
- cursor is in the line with
- item #+STARTUP:
- This line sets options to be used at startup of Org mode, when an
- Org file is being visited. The first set of options deals with the
- initial visibility of the outline tree. The corresponding variable for
- global default settings is
- code{t}, which means
- cindex
- cindex
- cindex
- example
- overview
- r{all headlines}
- showall
- end example
- Then there are options for aligning tables upon visiting a file. This
- is useful in files containing narrowed table columns. The corresponding
- variable is
- code{nil}.
- code{align}, STARTUP keyword
- code{noalign}, STARTUP keyword
- r{align all tables}
- noalign
- end example
- Logging closing and reinstating TODO items, and clock intervals
- (variables code{org-log-note-clock-out}, and
- cindex
- cindex
- cindex
- cindex
- cindex
- cindex
- cindex
- cindex
- example
- logdone
- r{record timestamp and a note when DONE}
- nologdone
- r{record a time when reinstating a repeating item}
- lognoterepeat
- r{do not record when reinstating repeating item}
- lognoteclock-out
- r{don't record a note when clocking out}
- code{org-hide-leading-stars} and
- code{nil} (meaning code{oddeven}).
- code{hidestars}, STARTUP keyword
- code{showstars}, STARTUP keyword
- code{odd}, STARTUP keyword
- code{even}, STARTUP keyword
- r{make all but one of the stars starting a headline invisible.}
- showstars
- r{virtual indentation according to outline level}
- noindent
- r{allow only odd outline levels (1,3,...)}
- oddeven
- end example
- To turn on custom format overlays over time stamps (variables
- code{org-time-stamp-overlay-formats}), use
- code{customtime}, STARTUP keyword
- r{overlay custom time format}
- code{constants-unit-system}).
- code{constcgs}, STARTUP keyword
- code{constSI}, STARTUP keyword
- r{
- r{
- end example
- To influence footnote settings, use the following keywords. The
- corresponding variables are
- code{org-footnote-auto-label}.
- code{fninline}, STARTUP keyword
- code{fnnoinline}, STARTUP keyword
- code{fnlocal}, STARTUP keyword
- code{fnprompt}, STARTUP keyword
- code{fnauto}, STARTUP keyword
- code{fnconfirm}, STARTUP keyword
- code{fnplain}, STARTUP keyword
- r{define footnotes inline}
- fnnoinline
- r{define footnotes near first reference, but not inline}
- fnprompt
- r{create [fn:1]-like labels automatically (default)}
- fnconfirm
- r{create [1]-like labels automatically}
- item #+TAGS: TAG1(c1) TAG2(c2)
- These lines (several such lines are allowed) specify the valid tags in
- this file, and (potentially) the corresponding
- code{org-tag-alist}.
- item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
- These lines provide settings for exporting files. For more details see
- item #+SEQ_TODO: #+TYP_TODO:
- These lines set the TODO keywords and their interpretation in the
- current file. The corresponding variables are
- code{org-todo-interpretation}.
- node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
- kindex C-c C-c
- kbd{C-c C-c} has many purposes in Org, which are all
- mentioned scattered throughout this manual. One specific function of
- this key is to add pxref{Tags}). In many
- other circumstances it means something like
- itemize
- item
- If there are highlights in the buffer from the creation of a sparse
- tree, or from clock display, remove these highlights.
- code{#+KEYWORD} lines, this
- triggers scanning the buffer for these lines and updating the
- information.
- item
- If the cursor is on a
- item
- If the cursor is inside a table created by the
- item
- If the current buffer is a remember buffer, close the note and file it.
- With a prefix argument, file it, without further interaction, to the
- default location.
- code{<<<target>>>}, update radio targets and
- corresponding links in this buffer.
- item
- If the cursor is at a footnote reference, go to the corresponding
- definition, and vice versa.
- item
- If the cursor is on a numbered item in a plain list, renumber the
- ordered list.
- code{#+BEGIN} line of a dynamical block, the
- block is updated.
- node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
- cindex hiding leading stars
- cindex odd-levels-only outlines
- example
- end group
- noindent
- It is non-trivial to make such a look work in Emacs, but Org contains three
- separate features that, combined, achieve just that.
- item
- *
- You may indent text below each headline to make the left boundary line up
- with the headline, like
- end example
- A good way to get this indentation is by hand, and Org supports this with
- paragraph filling, line wrapping, and structure editing
- code{org-adapt-indentation}.} preserving or adapting the
- indentation appropriate. A different approach would be to have a way to
- automatically indent lines according to outline structure by adding overlays
- or text properties. But I have not yet found a robust and efficient way to
- do this in large files.
- emph{Hiding leading stars}
- code{org-hide-leading-stars} or change this on a per-file basis
- with
- end example
- code{showstars}.
- With hidden stars, the tree becomes:
- group
- * Top level headline
- * Second level
- * 3rd level
- ...
- end example
- code{org-hide} that uses the
- background color as font color. If you are not using either white or
- black background, you may have to customize this face to get the wanted
- effect. Another possibility is to set this font such that the extra
- stars are
- code{grey90} on a white background.
- code{org-odd-levels-only}, or set this on a per-file basis with one of the
- following lines:
- end example
- You can convert an Org file from single-star-per-level to the
- double-star-per-level convention with
- kbd{M-x
- org-convert-to-oddeven-levels}.
- node TTY keys, Interaction, Clean view, Miscellaneous
- cindex tty key bindings
- Because Org contains a large number of commands, by default much of
- Org's core commands are bound to keys that are generally not
- accessible on a tty, such as the cursor keys (key{right},
- key{down}), key{RET}, in particular when used
- together with modifiers like key{Shift}. To access
- these commands on a tty when special keys are unavailable, the following
- alternative bindings can be used. The tty bindings below will likely be
- more cumbersome; you may find for some of the bindings below that a
- customized work-around suits you better. For example, changing a time
- stamp is really only fun with key{cursor}} keys, whereas on a
- tty you would rather use
- multitable
- item tab tab
- item key{TAB}} kbd{C-u tab
- kbd{M-tab tab key{Esc}
- item key{left}} kbd{C-c C-x L}
- item key{right}} kbd{C-c C-x i} kbd{key{right}}
- kbd{M-S-tab tab
- kbd{M-tab tab key{Esc}
- item key{up}} kbd{C-c C-x U}
- item key{down}} kbd{C-c C-x d} kbd{key{down}}
- kbd{M-S-tab tab
- kbd{S-tab tab
- kbd{M-tab tab key{Esc}
- item key{RET}} kbd{C-c C-x M}
- item key{left}} kbd{C-c tab
- kbd{S-tab key{right}}
- item key{up}} kbd{C-c tab
- kbd{S-tab key{down}}
- item key{left}} kbd{C-c C-x tab
- kbd{C-S-tab key{right}}
- end multitable
- section Interaction with other packages
- menu
- * Cooperation:: Packages Org cooperates with
- * Conflicts:: Packages that lead to conflicts
- node Cooperation, Conflicts, Interaction, Interaction
- table
- cindex
- item
- pxref{The spreadsheet}). Org
- checks for the availability of Calc by looking for the function
- xref{Embedded Mode,
- , Embedded Mode, Calc, GNU Emacs Calc Manual}.
- file{constants.el}
- file{constants.el} by Carsten Dominik
- In a table formula (
- code{org-table-formula-constants}, install
- the
- samp{M} for
- url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
- the function
- file{constants.el}.
- file{cdlatex.el} by Carsten Dominik
- file{cdlatex.el}
- Org mode can make use of the CDLaTeX package to efficiently enter
- Laref{CDLaTeX mode}.
- file{imenu.el} by Ake Stenhoff and Lars Lindberg
- file{imenu.el}
- Imenu allows menu access to an index of items in a file. Org mode
- supports Imenu - all you need to do to get the index is the following:
- end lisp
- By default the index is two levels deep - you can modify the depth using
- the option
- item
- cindex
- ref{Remember}.
- item
- cindex
- kbd{<} in the Speedbar frame.
- file{table.el}
- file{table.el} by Takaaki Ota
- cindex table editor,
- cindex
- uref{http://sourceforge.net/projects/table},
- and also part of Emacs 22).
- When kbd{C-c C-c} is pressed in such a table, Org mode
- will call
- table
- kindex C-c C-c
- file{table.el} table. Works when the cursor is in a
- table.el table.
- kindex C-c ~
- code{org-convert-table} for the restrictions under which this is
- possible.
- file{table.el} is part of Emacs 22.
- file{footnote.el}
- file{footnote.el} by Steven L. Baur
- Org mode recognizes numerical footnotes as provided by this package
- (
- end table
- subsection Packages that lead to conflicts with Org mode
- asis
- file{allout.el}
- file{allout.el} by Ken Manheimer
- Startup of Org may fail with the error message
- file{allout.el} on the load path, for example the version
- distributed with Emacs 21.x. Upgrade to Emacs 22 and this problem will
- disappear. If for some reason you cannot do this, make sure that org.el
- is loaded file{allout.el}, for example by putting
- file{.emacs} file.
- file{CUA.el}
- file{CUA.el} by Kim. F. Storm
- Key bindings in Org conflict with the
- code{org-replace-disputed-keys}. When
- set, Org will move the following key bindings in Org files, and
- in the agenda buffer (but not during date selection).
- end example
- Yes, these are unfortunately more difficult to remember. If you want
- to have other replacement keys, look at the variable
- item
- cindex
- kbd{S-<cursor>} keys, so everything written
- in the paragraph above about CUA mode also applies here.
- file{footnote.el}
- file{footnote.el} by Steven L. Baur
- Org supports the syntax of the footnote package, but only the
- numerical footnote markers. Also, the default key for footnote
- commands,
- code{footnote-prefix} to switch footnotes commands to another
- key. Or, you could use
- code{org-disputed-keys} to change the settings in Org.
- node Bugs, , Interaction, Miscellaneous
- cindex bugs
- Here is a list of things that should work differently, but which I
- have found too hard to fix.
- bullet
- pxref{Narrow columns}) to a width too small to
- display the link, the field would look entirely empty even though it is
- not. To prevent this, Org throws an error. The work-around is to
- make the column wide enough to fit the link, or to add some text (at
- least 2 characters) before the link in the same field.
- code{format} function does not transport text properties.
- samp{QUOTE} keyword should not
- autowrap.
- kbd{C-c C-o} to open a file link fails
- (for example because the application does not exist or refuses to open
- the file), it does so silently. No error message is displayed.
- emph{calculated} fields further down the row,
- multiple recalculation may be needed to get all fields consistent. You
- may use the command kbd{C-u C-c *}) to
- recalculate until convergence.
- end itemize
- appendix Extensions
- This appendix lists the extension modules that have been written for Org.
- Many of these extensions live in the
- menu
- * Extensions in the contrib directory:: These come with the Org distro
- * Other extensions:: These you have to find on the web.
- node Extensions in the contrib directory, Other extensions, Extensions, Extensions
- file{contrib} directory
- A number of extension are distributed with Org when you download it from its
- homepage. Please note that these extensions are
- url{http://orgmode.org} to get access to these modules.
- asis
- file{org-annotate-file.el} by
- item i{Bastien Guerry and Daniel E. German}
- Call
- file{contrib/packages/org-annotation-helper}.
- file{org-bookmark.el} by
- item i{Carsten Dominik}
- TODO dependencies for Org-mode. Make TODO state changes in one entry
- trigger changes in another, or be blocked by the state of another
- entry. Also, easily create chains of TODO items with exactly one
- active item at any time.
- file{org-elisp-symbol.el} by
- item i{Carsten Dominik}
- The
- code{perl} can be supported with
- this package as well.
- file{org-eval-light.el} by
- item i{Eric Schulte}
- Preprocess user-defined blocks for export.
- file{org-expiry.el} by
- item i{Carsten Dominik}
- Dynamic indentation of Org outlines. The plan is to indent an outline
- according to level, but so far this is too hard for a proper and stable
- implementation. Still, it works somewhat.
- file{org-interactive-query.el} by
- item i{Georg C. F. Greve}
- Hook mairix search into Org for different MUAs.
- file{org-man.el} by
- item i{Carsten Dominik}
- Support for some Muse-like tags in Org-mode. This package allows you
- to write code{<src>} and other syntax copied from
- Emacs Muse, right inside an Org file. The goal here is to make it easy
- to publish the same file using either org-publish or Muse.
- file{org-panel.el} by
- item i{Bastien Guerry}
- A registry for Org links, to find out from where links point to a given
- file or location.
- file{org2rem.el} by
- file{remind} program.
- file{org-screen.el} by
- item i{Bastien Guerry}
- Table of contents in a separate buffer, with fast access to sections
- and easy visibility cycling.
- file{orgtbl-sqlinsert.el} by
- end table
- section Other extensions
- node Hacking, History and Acknowledgments, Extensions, Top
- menu
- * Adding hyperlink types:: New custom link types
- * Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
- * Dynamic blocks:: Automatically filled blocks
- * Special agenda views:: Customized views
- * Using the property API:: Writing programs that use entry properties
- * Using the mapping API:: Mapping over all or selected entries
- node Adding hyperlink types, Tables in arbitrary syntax, Hacking, Hacking
- cindex hyperlinks, adding new types
- Org has a large number of hyperlink types built-in
- (
- file{org-man.el} that will add support for creating links like
- lisp
- ;;; org-man.el - Support for links to manpages in Org
- (require 'org)
- (org-add-link-type "man" 'org-man-open)
- (add-hook 'org-store-link-functions 'org-man-store-link)
- (defcustom org-man-command 'man
- "The Emacs command to be used to display a man page."
- :group 'org-link
- :type '(choice (const man) (const woman)))
- (defun org-man-open (path)
- "Visit the manpage on PATH.
- PATH should be a topic that can be thrown at the man command."
- (funcall org-man-command path))
- (defun org-man-store-link ()
- "Store a link to a manpage."
- (when (memq major-mode '(Man-mode woman-mode))
- ;; This is a man page, we do make this link
- (let* ((page (org-man-get-page-name))
- (link (concat "man:" page))
- (description (format "Manpage for %s" page)))
- (org-store-link-props
- :type "man"
- :link link
- :description description))))
- (defun org-man-get-page-name ()
- "Extract the page name from the buffer name."
- ;; This works for both `Man-mode' and `woman-mode'.
- (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
- (match-string 1 (buffer-name))
- (error "Cannot create link to this man page")))
- (provide 'org-man)
- ;;; org-man.el ends here
- noindent
- You would activate this new link type in
- lisp
- (require 'org-man)
- noindent
- Let's go through the file and see what it does.
- item
- It does file{org.el} has been
- loaded.
- code{org-add-link-type} to define a new link type
- with prefix
- item
- The next line adds a function to
- kbd{C-c l} to record a useful link in a
- buffer displaying a man page.
- code{man} and
- code{org-man-command} to display the man page.
- Finally the function
- kbd{C-c l}, also this function will be called to
- try to make a link. The function must first decide if it is supposed to
- create the link for this buffer type, we do this by checking the value
- of the variable
- code{nil}. If yes, the link is created by getting the
- manual topic from the buffer name and prefixing it with the string
- code{org-store-link-props}
- and set the code{:link} properties. Optionally you
- can also set the
- kbd{C-c C-l}.
- section Tables and lists in arbitrary syntax
- cindex lists, in other modes
- TeX{}. However, this is extremely
- hard to do in a general way, would lead to a customization nightmare,
- and would take away much of the simplicity of the Orgtbl mode table
- editor.
- This appendix describes a different approach. We keep the Orgtbl mode
- table in its native format (the
- i{translate} the table to the correct syntax, and to
- i{target table}). This puts
- the burden of writing conversion functions on the user, but it allows
- for a very flexible system.
- Bastien added the ability to do the same with lists. You can use Org's
- facilities to edit and structure lists by turning
- TeX{}
- or Texinfo.)
- end menu
- subsection Radio tables
- example
- noindent
- Just above the source table, we put a special line that tells
- Orgtbl mode how to translate this table and where to install it. For
- example:
- end example
- code{table_name} is the reference name for the table that is also used
- in the receiver lines.
- table
- item :skip N
- Skip the first N lines of the table. Hlines do count as separate lines for
- this parameter!
- emph{after} the
- removal of these columns, the function never knows that there have been
- additional columns.
- noindent
- The one problem remaining is how to keep the source table in the buffer
- without disturbing the normal workings of the file, for example during
- compilation of a C file or processing of a La
- itemize
- item
- The table could be placed in a block comment if that is supported by the
- language. For example, in C mode you could wrap the table between
- samp{*/} lines.
- i{END}
- statement, for example samp{\end}}
- in La
- item
- You can just comment the table line by line whenever you want to process
- the file, and uncomment it whenever you need to edit the table. This
- only sounds tedious - the command
- end itemize
- subsection A LaTeX example of radio tables
- TeX{} is to use the
- file{comment.sty}. It has to be
- activated by placing {comment
- footnote{By
- default this works only for La
- code{orgtbl-radio-tables} to install templates for other
- modes.} with the command
- samp{salesfigures}. You
- will then get the following template:
- example
- % BEGIN RECEIVE ORGTBL salesfigures
- % END RECEIVE ORGTBL salesfigures
- \begin}
- #+ORGTBL: SEND salesfigures orgtbl-to-latex
- | | |
- \end}
- noindent
- The
- code{orgtbl-to-latex} to convert the table into La
- code{salesfigures}. You may now
- fill in the table, feel free to use the spreadsheet features
- samp{#+TBLFM} line contains an odd number of dollar characters,
- this may cause problems with font-lock in LaTeX mode. As shown in the
- example you can fix this by adding an extra line inside the
- code{comment} environment to the
- variable
- example
- % BEGIN RECEIVE ORGTBL salesfigures
- % END RECEIVE ORGTBL salesfigures
- \begin}
- #+ORGTBL: SEND salesfigures orgtbl-to-latex
- | Month | Days | Nr sold | per day |
- |-------+------+---------+---------|
- | Jan | 23 | 55 | 2.4 |
- | Feb | 21 | 16 | 0.8 |
- | March | 22 | 278 | 12.6 |
- #+TBLFM: $4=$3/$2;%.1f
- % $ (optional extra dollar to keep font-lock happy, see footnote)
- \end}
- noindent
- When you are done, press
- i{splice}, i.e. to not produce
- header and footer commands of the target table:
- {tabular{lrrr
- {1{c{Days
- {tabular
- {comment
- {comment
- end example
- The Lacode{orgtbl-to-latex} is already part of
- Orgtbl mode. It uses a
- code{\hline}. Furthermore, it
- interprets the following parameters (see also
- table
- item :splice nil/t
- When set to t, return only table body lines, don't wrap them into a
- tabular environment. Default is nil.
- code{%s} for the
- original field value. For example, to wrap each field value in dollars,
- you could use
- code{:fmt (2 "$%s$" 4 "%s\\%%")}.
- A function of one argument can be used in place of the strings; the
- function must return a formatted string.
- code{%s} twice for inserting mantissa and exponent, for example
- {%scode{"%s\\,(%s)"}. This
- may also be a property list with column numbers and formats, for example
- {%s{%s
- code{efmt} has been applied to a value,
- code{fmt}, functions of two arguments can be
- supplied instead of strings.
- node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
- cindex HTML, and Orgtbl mode
- code{orgtbl-to-csv}
- (comma-separated values),
- code{orgtbl-to-latex}, code{orgtbl-to-texinfo}.
- Except for footnote{The HTML translator uses the same
- code that produces tables during HTML export.}, these all use a generic
- translator, code{orgtbl-to-latex}
- itself is a very short function that computes the column definitions for the
- lisp
- {tabular{" alignment "
- {tabular
- end group
- var{PARAMS}) are combined with the ones newly defined in the function
- (variable
- samp{ORGTBL SEND} line) take precedence. So if you
- would like to use the La
- samp{\\[2mm]} instead of the default
- example
- #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
- TeX{} translator, or you can use the generic function
- directly. For example, if you have a language where a table is started
- with samp{!ETBL!}, and where table lines are
- started with samp{!EL!} and where the field
- separator is a TAB, you could call the generic translator like this (on
- a single line!):
- end example
- code{orgtbl-to-generic} for a full list of parameters understood by
- that function and remember that you can pass each of them into
- code{orgtbl-to-texinfo}, and any other function
- using the generic function.
- Of course you can also write a completely new function doing complicated
- things the generic translator cannot do. A translator function takes
- two arguments. The first argument is the table, a list of lines, each
- line either the symbol
- samp{#+ORGTBL: SEND} line. The function must return a single string
- containing the formatted table. If you write a generally useful
- translator, please post it on
- node Radio lists, , Translator functions, Tables in arbitrary syntax
- cindex radio lists
- pxref{Radio tables})
- code{org-export-latex.el} package to use radio lists
- since the relevant code is there for now.}. As for radio tables, you
- can insert radio lists templates in HTML, La
- code{org-list-insert-radio-list}.
- Here are the differences with radio tables:
- minus
- code{ORGLST} instead of
- item
- The available translation functions for radio lists don't take
- parameters.
- end itemize
- Here is a La
- TeX{} file:
- {comment
- {comment
- end example
- Pressing `C-c C-c' on
- TeX{} list between the two marker lines.
- section Dynamic blocks
- emph{dynamic blocks}. These are
- specially marked regions that are updated by some user-written function.
- A good example for such a block is the clock table inserted by the
- command pxref{Clocking work time}).
- Dynamic block are enclosed by a BEGIN-END structure that assigns a name
- to the block and can also specify parameters for the function producing
- the content of the block.
- #+BEGIN:dynamic block
- end example
- Dynamic blocks are updated with the following commands
- kbd
- item C-c C-x C-u
- Update dynamic block at point.
- item C-u C-c C-x C-u
- Update all dynamic blocks in the current file.
- code{:content}.
- For a block with name
- code{org-dblock-write:myblock} with as only parameter a property list
- with the parameters given in the begin line. Here is a trivial example
- of a block that keeps track of when the block update function was last
- run:
- end example
- lisp
- (defun org-dblock-write:block-update-time (params)
- (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
- (insert "Last block update at: "
- (format-time-string fmt (current-time)))))
- code{org-update-all-dblocks} to a hook, for
- example code{org-update-all-dblocks} is
- written in a way that is does nothing in buffers that are not in
- node Special agenda views, Using the property API, Dynamic blocks, Hacking
- cindex agenda views, user-defined
- Org provides a special hook that can be used to narrow down the
- selection made by any of the agenda views. You may specify a function
- that is used at each match to verify if the match should indeed be part
- of the agenda view, and if not, how much should be skipped.
- Let's say you want to produce a list of projects that contain a WAITING
- tag anywhere in the project tree. Let's further assume that you have
- marked all tree headings that define a project with the TODO keyword
- PROJECT. In this case you would run a TODO search for the keyword
- PROJECT, but skip the match unless there is a WAITING tag anywhere in
- the subtree belonging to the project line.
- To achieve this, you must write a function that searches the subtree for
- the tag. If the tag is found, the function must return
- lisp
- (defun my-skip-unless-waiting ()
- "Skip trees that are not waiting"
- (let ((subtree-end (save-excursion (org-end-of-subtree t))))
- (if (re-search-forward ":waiting:" subtree-end t)
- nil ; tag found, do not skip
- subtree-end))) ; tag not found, continue after end of subtree
- lisp
- (org-add-agenda-custom-command
- '("b" todo "PROJECT"
- ((org-agenda-skip-function 'my-skip-unless-waiting)
- (org-agenda-overriding-header "Projects waiting for something: "))))
- code{org-agenda-overriding-header} to get a
- meaningful header in the agenda view.
- A general way to create custom searches is to base them on a search for
- entries with a certain level limit. If you want to study all entries with
- your custom search function, simply do a search for
- code{org-agenda-skip-function} to select the entries you really want to
- have.
- You may also put a Lisp form into
- code{org-agenda-skip-entry-if}
- and
- table
- item '(org-agenda-skip-entry-if 'scheduled)
- Skip current entry if it has been scheduled.
- item '(org-agenda-skip-entry-if 'deadline)
- Skip current entry if it has a deadline.
- item '(org-agenda-skip-entry 'regexp "regular expression")
- Skip current entry if the regular expression matches in the entry.
- item '(org-agenda-skip-subtree-if 'regexp "regular expression")
- Same as above, but check and skip the entire subtree.
- lisp
- (org-add-agenda-custom-command
- '("b" todo "PROJECT"
- ((org-agenda-skip-function '(org-agenda-skip-subtree-if
- 'regexp ":waiting:"))
- (org-agenda-overriding-header "Projects waiting for something: "))))
- node Using the property API, Using the mapping API, Special agenda views, Hacking
- cindex API, for properties
- defun org-entry-properties &optional pom which
- Get all properties of the entry at point-or-marker POM.
- This includes the TODO keyword, the tags, time strings for deadline,
- scheduled, and clocking, and any additional properties defined in the
- entry. The return value is an alist, keys may occur multiple times
- if the property key was used several times.
- POM may also be nil, in which case the current entry is used.
- If WHICH is nil or `all', get all properties. If WHICH is
- `special' or `standard', only get that subclass.
- defun org-entry-get pom property &optional inherit
- Get value of PROPERTY for entry at point-or-marker POM. By default,
- this only looks at properties defined locally in the entry. If INHERIT
- is non-nil and the entry does not have the property, then also check
- higher levels of the hierarchy. If INHERIT is the symbol
- code{org-use-property-inheritance} selects PROPERTY for inheritance.
- defun org-entry-delete pom property
- Delete the property PROPERTY from entry at point-or-marker POM.
- defun org-entry-put pom property value
- Set PROPERTY to VALUE for entry at point-or-marker POM.
- defun org-buffer-property-keys &optional include-specials
- Get all property keys in the current buffer.
- defun org-insert-property-drawer
- Insert a property drawer at point.
- defun org-entry-put-multivalued-property pom property &rest values
- Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
- strings. They will be concatenated, with spaces as separators.
- defun org-entry-get-multivalued-property pom property
- Treat the value of the property PROPERTY as a whitespace-separated list of
- values and return the values as a list of strings.
- defun org-entry-add-to-multivalued-property pom property value
- Treat the value of the property PROPERTY as a whitespace-separated list of
- values and make sure that VALUE is in this list.
- defun org-entry-remove-from-multivalued-property pom property value
- Treat the value of the property PROPERTY as a whitespace-separated list of
- values and make sure that VALUE is
- end defun
- end defun
- section Using the mapping API
- cindex mapping entries, API
- Org has sophisticated mapping capabilities to find all entries satisfying
- certain criteria. Internally, this functionality is used to produce agenda
- views, but there is also an API that can be used to execute arbitrary
- functions for each or selected entries. The main entry point for this API
- is:
- example
- nil
- r{the subtree started with the entry at point}
- file
- r{the current buffer, and any archives associated with it}
- agenda
- r{all agenda files with any archive files associated with them}
- (file1 file2 ...)
-
- end example
- The remaining args are treated as settings for the skipping facilities of
- the scanner. The following items can be given here:
- r{skip trees with the archive tag}
- comment
- r{will be used as value for
- r{so whenever the the function returns t, FUNC}
-
- r{continue from the point where the function leaves it}
- end defun
- The function given to that mapping routine can really do anything you like.
- It can uce the property API (
- defun org-todo &optional arg
- Change the TODO state of the entry, see the docstring of the functions for
- the many possible values for the argument ARG.
- defun org-priority &optional action
- Change the priority of the entry, see the docstring of this function for the
- possible values for ACTION.
- defun org-toggle-tag tag &optional onoff
- Toggle the tag TAG in the current entry. Setting ONOFF to either
- code{off} will not toggle tag, but ensure that it is either on or off.
- defun org-promote
- Promote the current entry.
- defun org-demote
- Demote the current entry.
- code{TOMORROW} into TODO entries with the keyword
- lisp
- (org-map-entries
- '(org-todo "UPCOMING")
- "+TOMORROW" 'file 'archive 'comment)
- code{WAITING}, in all agenda files.
- end lisp
- appendix History and Acknowledgments
- cindex history
- emph{Visibility cycling} and
- file{outline-magic.el}, but quickly moved to the more general
- emph{TODO entries}, basic
- emph{table support}. These areas highlight the two main
- goals that Org still has today: To create a new, outline-based,
- plain text mode with innovative and intuitive editing features, and to
- incorporate project planning functionality directly into a notes file.
- A special thanks goes to
- code{emacs-orgmodegnu.org} have provided a constant stream of bug
- reports, feedback, new ideas, and sometimes patches and add-on code.
- Many thanks to everyone who has helped to improve this package. I am
- trying to keep here a list of the people who had significant influence
- in shaping one or more aspects of Org. The list may not be
- complete, if I have forgotten someone, please accept my apologies and
- let me know.
- bullet
- i{Russel Adams} came up with the idea for drawers.
- i{Thomas Baumann} wrote file{org-mhe.el}.
- i{Christophe Bataillon} created the great unicorn logo that we use on the
- Org-mode website.
- i{Alex Bochannek} provided a patch for rounding time stamps.
- i{Charles Cave}'s suggestion sparked the implementation of templates
- for Remember.
- i{Pavel Chalmoviansky} influenced the agenda treatment of items with
- specified time.
- i{Gregory Chernov} patched support for lisp forms into table
- calculations and improved XEmacs compatibility, in particular by porting
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- TeX{} exporter and
- item
- item
- item
- item
- file{org-irc.el}.
- i{Scott Jaderholm} proposed footnotes, control over whitespace between
- folded entries, and column view for properties.
- i{Tokuya Kameshima} wrote file{org-mew.el}.
- i{Shidai Liu} ("Leo") asked for embedded La
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- item
- file{org-info.js}, a Java script for displaying
- webpages derived from Org using an Info-like, or a folding interface with
- single key navigation.
- i{Frank Ruell} solved the mystery of the
- file{allout.el}.
- i{Jason Riedy} generalized the send-receive mechanism for orgtbl tables with
- extensive patches.
- i{Philip Rooke} created the Org reference card, provided lots
- of feedback, developed and applied standards to the Org documentation.
- i{Christian Schlauer} proposed angular brackets around links, among
- other things.
- i{Eric Schulte} wrote
- item
- Linking to VM/BBDB/Gnus was first inspired by
- file{organizer-mode.el}.
- i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
- examples, and remote highlighting for referenced code lines.
- i{Stathis Sideris} wrote the
- file{contrib} directory.
- i{Daniel Sinder} came up with the idea of internal archiving by locking
- subtrees.
- i{Dale Smith} proposed link abbreviations.
- i{James TD Smith} has contributed a large number of patches for useful
- tweaks and features.
- i{Adam Spiers} asked for global linking commands, inspired the link
- extension system, added support for mairix, and proposed the mapping API.
- i{Andy Stewart} contributed code to
- item
- file{org-publish.el} and drafted the manual
- chapter about publishing.
- i{J
- item
- samp{QUOTE}
- keyword.
- i{David Wainberg} suggested archiving, and improvements to the linking
- system.
- i{John Wiegley} wrote file{planner.el}, and
- file{org-attach.el}) and integration with Apple Mail
- (
- item
- item
- item
- file{org-mouse.el}, proposed agenda blocks
- and contributed various ideas and code snippets.
- node Main Index, Key Index, History and Acknowledgments, Top
- printindex cp
- unnumbered Key Index
- bye
- end ignore
- c ispell-local-dictionary: "en_US-w_accents"
- c fill-column: 77
|