Nekromanti Escape Meta Alt Control Shift

2097

deleta mitt konto tack
Joined
20 Sep 2014
Messages
3,643
Alltså, bäst jag inleder med att säga: dom som kör windows, mac, android eller iphone göre sig icke besvär. Emacs, pandoc, sqlite, zenity, lua, zsh m.fl. kommer avhandlas nedan.

Till att börja med har jag en pandoc writer för wrnu så jag kan skriva inläggen i markdown. Jag lägger in features efter hand jag behöver dom (enligt YAGNI-principen) ex vis kommer jag väl lägga in tabeller förr eller senare. Jag utgår från ett skrälle jag hittade på hubben:

Code:
--[[ ******************************************************************************
 *                                                                            *
 *                         Pandoc 2 BBCode for phpBB                          *
 *                                                                            *
 ******************************************************************************
 "bbcode_phpbb.lua" v1.1 (2016-12-20)
     adapted by Tristano Ajmone (@tajmone):
     -- https://github.com/tajmone/2bbcode
 ------------------------------------------------------------------------------
 This code was forked by Tristano Ajmone from @lilydjwg's `2bbcode.lua`:

 -- https://github.com/lilydjwg/2bbcode

 Copyright (c) 2016, @lilydjwg (??), all rights reserved.
 Released under BSD 3-Clause License:

 -- https://github.com/lilydjwg/2bbcode/blob/master/LICENSE

 ==============================================================================
                  BSD 3-Clause License                            
 ==============================================================================
 Copyright (c) 2016, ??
 All rights reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

 * Neither the name of the copyright holder nor the names of its
   contributors may be used to endorse or promote products derived from
   this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ==============================================================================]]


-- Invoke with: pandoc -t bbcode_phpbb.lua

-- Blocksep is used to separate block elements.
function Blocksep()
  return "\n\n"
end

-- This function is called once for the whole document. Parameters:
-- body, title, date are strings; authors is an array of strings;
-- variables is a table.  One could use some kind of templating
-- system here; this just gives you a simple standalone HTML file.
function Doc(body, title, authors, date, variables)
  return body .. '\n'
end

-- The functions that follow render corresponding pandoc elements.
-- s is always a string, attr is always a table of attributes, and
-- items is always an array of strings (the items in a list).
-- Comments indicate the types of other variables.

function Str(s)
  return s
end

function Space()
  return " "
end

function LineBreak()
  return "\n"
end

-- CHANGES BY @tajmone: Emphasis
--   *  Convert to Italic [i] instead of Emphasis [em]
function Emph(s)
  return "[I]" .. s .. "[/I]"
end

function Strong(s)
  return "[B]" .. s .. "[/B]"
end

function Subscript(s)
  error("Subscript isn't supported")
end

function Superscript(s)
  return s
end

function SmallCaps(s)
  error("SmallCaps isn't supported")
end

-- CHANGES BY @tajmone: Strikeout
--   *  Convert to Underline [u] instead of Strikeout/Strikethrough [del]
function Strikeout(s)
  return '[U]' .. s .. '[/U]'
end

function Link(s, src, tit)
  local ret = '[url'
  if s then
ret = ret .. '=' .. src
  else
s = src
  end
  ret = ret .. "]" .. s .. "[/url]"
  return ret
end

-- CHANGES BY @tajmone: CaptionedImage
--   *  Added CaptionedImage function (missing in original)
--        Caused error for GFM images with Alt text (even if Alt was empty)
function CaptionedImage(src, tit, caption, attr)
  return "[img]" .. src .. "[/img]"
end

function Image(s, src, tit)
  return "[img=" .. tit .. "]" .. src .. "[/img]"
end

function Code(s, attr)
  return "[FONT=courier new]" .. s .. "[/FONT]"
end

function InlineMath(s)
  error("InlineMath isn't supported")
end

function DisplayMath(s)
  error("DisplayMath isn't supported")
end

function Note(s)
  error("Note isn't supported")
end

function Plain(s)
  return s
end

function Para(s)
  return s
end

-- CHANGES BY @tajmone: Headers 1-6
--   *  Don't use [h] (unsupported in phpBB)
--   *  Convert to different sizes and colors, always bold.
--   *  Higher order headers have bigger font size and more contrasting color.

-- lev is an integer, the header level.
function Header(lev, s, attr)
  if lev == 1 then
return "[SIZE=6][B]" .. s .. "[/B][/SIZE]"
  elseif lev == 2 then
return "[SIZE=6][B]" .. s .. "[/B][/SIZE]"
  elseif lev == 3 then
return "[SIZE=5][B]" .. s .. "[/B][/SIZE]"
  elseif lev == 4 then
return "[SIZE=4][B]" .. s .. "[/B][/SIZE]"
  elseif lev == 5 then
return "[SIZE=4][B]" .. s .. "[/B][/SIZE]"
  else
return "[B]" .. s .. "[/B]"
  end
end

function BlockQuote(s)
  return "[quote]" .. s .. "[/quote]"
end

function HorizontalRule()
  return "--------------------------------------------------------------------------------"
end

function LineBlock(ls)
  return table.concat(ls, '\n')
end

function CodeBlock(s, attr)
  return "[abborre]\n" .. s .. '\n[/abborre]'
end

function BulletList(items)
  local buffer = {}
  for _, item in ipairs(items) do
table.insert(buffer, "
[*]" .. item)
  end
  return "
[LIST]
[*]" .. table.concat(buffer, "\n") .. "
[/LIST]
 "
end

function OrderedList(items)
  local buffer = {}
  for _, item in ipairs(items) do
table.insert(buffer, "
[*]" .. item)
  end
  return " 
[LIST=1]
[*]" .. table.concat(buffer, "\n") .. "
[/LIST]
 "
end

-- Revisit association list STackValue instance.
function DefinitionList(items)
  local buffer = {}
  for _, item in pairs(items) do
for k, v in pairs(item) do
  table.insert(buffer, "[B]" .. k .. "[/B]:\n" ..
            table.concat(v, "\n"))
end
  end
  return table.concat(buffer, "\n")
end

-- Convert pandoc alignment to something HTML can use.
-- align is AlignLeft, AlignRight, AlignCenter, or AlignDefault.
function html_align(align)
  if align == 'AlignLeft' then
return 'left'
  elseif align == 'AlignRight' then
return 'right'
  elseif align == 'AlignCenter' then
return 'center'
  else
return 'left'
  end
end

-- CHANGES BY @tajmone: Table
--   *  Now presence of a Table in input doesn't throw an error and abort,
--        it just returns empty string, suppressing the table in converted output!
--   *  Warning is printed to STDERR showing the omitted Table's headers
--      (so user can understand what was left out).

-- Caption is a string, aligns is an array of strings,
-- widths is an array of floats, headers is an array of
-- strings, rows is an array of arrays of strings.
function Table(caption, aligns, widths, headers, rows)
  local tmpstr = '| '
  for i, h in pairs(headers) do
tmpstr = tmpstr .. h .. ' | '
  end
  PrintWarning('Table omitted: ' .. tmpstr)
  return ''
--  error("Table isn't supported")
end

-- CHANGES BY @tajmone: RawBlock
--   *  Suppress from output if it's raw HTML
--      (Even html comments were converted to [abborre], and Markdown TOC-tags would show up in final BBCode)
--   *  Warning is printed to STDERR with suppresed HTML
function RawBlock(format, str)
  if format == "html" then
PrintWarning('Raw HTML omitted: ' .. str)
  return ''
  else
return '[abbore]\n' .. str .. '\n[/abbore]\n'
  end
end

function Span(s, attr)
  return s
end

function Div(s, attr)
  return s .. '\n'
end

-- The following code will produce runtime warnings when you haven't defined
-- all of the functions you need for the custom writer, so it's useful
-- to include when you're working on a writer.
local meta = {}
meta.__index =
  function(_, key)
io.stderr:write(string.format("WARNING: Undefined function '%s'\n",key))
return function() return "" end
  end
setmetatable(_G, meta)

-- CHANGES BY @tajmone: DoubleQuoted
--   *  Added DoubleQuoted function (missing in original)
--      Caused error for text within double quotes
--   *  Returns text in nice UTF-8 curly double quotes (always)
function DoubleQuoted(s)
  return "“" .. s .. '”'
end

-- CHANGES BY @tajmone: SingleQuoted
--   *  Added SingleQuoted function (missing in original)
--      Caused error for text within single quotes
--   *  Returns text in nice UTF-8 curly single quotes (always)
function SingleQuoted(s)
  return "‘" .. s .. '’'
end

-- CHANGES BY @tajmone: SoftBreak
--   *  Added SoftBreak function (missing in original)
--      This element was added in pandoc 1.16 as a matter of editing convenience
--      to preserve line breaks (as opposed to paragraph breaks) from input source to output.
--   *  Returns text followed by \n
function SoftBreak()
  return "\n"
end


-- CHANGES BY @tajmone: PrintWarning function
--   *  I've added this function to warn the user (on STDERR) when
--      some BBCode-unsupported input is suppressed from output.
function PrintWarning(s)
  io.stderr:write("WARNING! " .. s .. '\n')
end
--[[
==============================================================================
                 FILE HISTORY                                
==============================================================================
v1.1 - 2016/12/20
 - Bug Fix: Added missing fucntions:
   - DoubleQuoted()
   - SingleQuoted()
   - SoftBreak()
v1.0 - 2016/12/10
 - Forked from `2bbcode.lua` and created 1st release.
]]
(Ni får byta ut ordet "abborre" mot "code" :D tydligen går det inte att ha en kod i koden :D)

Jag har skickat upp dom patches jag kände för, såsom vis LineBlock, andra ändringar har jag inte brytt mig om. Ex vis lade dom in en massa extra drälliga linebreaks i och runt quote och list som jag har tagit bort. Funderar på att skicka upp det med för dom linebreaksen är såvittjagvet semantiska i BBcode/VBcode och ger en fulare output. Men det kan jag ha fått om bakfoten därför att orka.

För att inifrån emacs kunna göra om regions från markdown till wrnu (att det är på region-basis är ibland väldigt smidigt, även om jag ofta tar hela buffern) har jag gjort en enkel liten snutt. (Skickar med den som är till S-G också, där behövdes ingen custom writer eftersom dom använder html):

Code:
(defun wrnu ()
  (interactive)
  (shell-command-on-region (mark) (point) "pandoc -St ~/.pandoc/data/wrnu.lua" nil t))

(defun sg ()
  (interactive)
  (shell-command-on-region (mark) (point) "pandoc -S" nil t))
Pathen till writern får ni ju ändra såklart!

Det som gör markdown så bra är samma sak som det får kritik från av dom som inte fattat: att man kan skriva saker i orginalspråket också. Markdown är inte som Textile att det är en all-ersättande lösning. Det är bara som en liten genväg eller hjälp för dom som ibland tycker det är lättare att skriva *bold* än [*b]bold[*/b] och ibland inte tycker det. Ex vis om man skriver html kan man blanda html och markdown i samma fil, om man skriver wrnu-forum-kod kan man blanda det och markdown i samma fil. Så för att göra länkar har jag skrivit dom på vanlig forumsyntax, har aldrig riktigt vant mig vid markdowns länksyntax. Men… jag är uppenbarligen inte van vid wrnu:s syntax heller för det är fortfarande bland dom vanligaste felen i mina inlägg, att jag mablat till URL-syntaxen. Så idag har jag pillat till en lösning på det.

Code:
(defun md-link ()
  (interactive)
  (shell-command (concat "/home/sandra/skami/sh/md_link.sh '" (read-from-minibuffer "Link peps: ") "'") t)
  (forward-sexp 2))

(global-set-key (kbd "C-c C-l") 'md-link)
Jag brukar bara köra wrnu och sg från M-x. Men md-link mappade jag till C-c C-l.

Programmet som gör om söksträng till färdigformaterad link är inte en självklarhet (speciellt om ni inte heter “sandra” och inte har era skalskript i “skami/sh”), jag slängde ihop ett skalskript med zenity och sqlite3 som söker igenom min firefox browsing history för att hitta länken.

Code:
#!/usr/bin/zsh
exec 2>/dev/null
match=$(echo "$*"|sed -e 's/ /%/g' -e 's/^/%/g' -e 's/$/%/g')

get_new_title(){
echo -n $(zenity --entry --entry-text="$(echo "$*" |sed 's/|.*//')")

}

title_fixer() {
echo -n '['$(get_new_title "$*")']('$(echo "$*"|sed 's/.*|//')')'
}

title_fixer $(sqlite3 /home/sandra/.mozilla/firefox/*default/places.sqlite "select title, url from moz_places where url like '${match}' or title like '${match}';"|zenity --list --column Places|head -1)
Så jag kan till exempel trycka på C-c C-l, skriva in preppar hörna, och få upp en lång lista med länkar, välja en av dom, skriva in en ny titel på den (eller ändra/nöja mig med den hemsidans title-tag), och så klistras det in i markdownformat i buffern. Även om jag inte riktigt är van vid markdowns länksyntax kanske detta kan få mig att bli mer van + det kommer funka till S-G också om jag nu nån gång kommer tillbaka dit efter min välförtjänta och totalt rättvisa och inte alls oproportionerliga rage quit.?
 

wilper

Gubevars en rätt produktiv människa.
Joined
19 May 2000
Messages
8,078
Location
Nordnordost
Jag har börjat skriva mina spel i org-mode och sedan exportera till LaTeX för PDF-konvertering när de skall spridas.

Emacs är lycka.
 

2097

deleta mitt konto tack
Joined
20 Sep 2014
Messages
3,643
Jag skrev mina fanfics till spelarna (ex vis den senaste igår) i org-mode och skriver ofta mina blogposter där också.

Org-mode behövdes för fanficsen eftersom dom har olika branches som läsaren kan välja mellan. Varje branch blev en rubriknivå i org-mode. Fulhack :D

Org-mode har dock ett problem. Eller, ja, två. Det ena är att det inte går att blanda forumkod och org-mode fritt. Ex vis saker som spoiler-taggar. Och det andra är att markdownsyntaxen är mycket enklare att komma ihåg för den är så lik ascii-email. Att skriva /italic såhär/ har jag väl vant mig vid men det är alltid saker som trippar upp mig.

Därför är jag glad att både pandoc och jekyll kan läsa (och känna igen) både org-mode och markdown så jag kan använda det ena ibland, det andra ibland. Använder nåt ruby plugin till jekyll för att kunna ta org-mode-poster.
Och pandoc kan ju också göra om dom emellan sig. Iom att pandoc kan läsa org mode så kan du kanske ha nytta av min wrnu-writer också. Den blev lite tillmablad i codeblocket men här är den iaf som fil.

Men ja, org-mode är otroligt bra och jag använder det mycket.

Wilps, du ska få dig en present isf iom du gillar org-mode lika mkt som jag. Något jag har uppfunnit och kallar fantastic ret och inte har orkat skicka upstream:

Code:
(defcustom fantastic-ret-in-position "^\\** *"
  "On a line immediately following BOL, any number of asterisks, and then any number of spaces"
  :type 'regexp)

(defun find-level ()
  (save-excursion
(move-beginning-of-line nil)
(setq level 0)
(while (looking-at "\\*")
  (setq level (1+ level))
  (forward-char))
level))

(defun find-previous-level ()
  (save-excursion
(while (and (zerop (forward-line -1)) (zerop (find-level))))
(find-level)))

(defun new-line-same-level ()
  (let ((amount (find-level)))
(newline)
(insert-char ?* amount)
(unless (zerop amount) (insert-char ?  1))))

(defun change-level ()
  (let* ((my-level (find-level))
     (prev-level (find-previous-level))
     (amount
      (cond ((eq my-level prev-level)
         (1+ prev-level))
        ((zerop my-level)
         prev-level)
        ((> my-level prev-level)
         (max 0 (1- prev-level)))
        (t (max 0 (1- my-level))))))
(move-beginning-of-line nil)
(while (looking-at "[* ]") (delete-char 1))
(insert-char ?* amount)
(unless (zerop amount) (insert-char ?  1))))

(defun org-fantastic-ret ()
  (interactive)
  (if (looking-back fantastic-ret-in-position)
  (change-level)
(new-line-same-level)))

(defun org-vanilla-ret ()
  (interactive)
  (newline)
  (move-beginning-of-line nil))

(eval-after-load 'org
  '(define-key org-mode-map "\r" 'org-fantastic-ret))

(eval-after-load 'org
  '(define-key org-mode-map [(control return)] 'org-vanilla-ret))
Jag har mappat fantastic-ret till RET, och vanliga newlines ligger ju kvar på C-j och C-m, och så har jag gjort en newline som dessutom hoppar till början av raden som jag har lagt på C-RET.

Så här funkar det:

Fantastic-ret gör två olika saker. Dels om man trycker på den så görs nästa rad på samma level i org-hierarkin. Dvs:

**** Hej
***** Du
***** Gamle|? om du trycker fantastic-ret här
***** |? så kommer du hit, dvs den gör fem stjärnor och ett mellanslag åt dig


Det andra den gör är också rätt så smart. Om du trycker på den *när du har din cursor på ett sånt ställen* så togglas istället vilken org-level du är på.

**** Hej
***** Du
***** Gamle
***** |? om du trycker fantastic-ret här


**** Hej
***** Du
***** Gamle
****** |? så läggs en stjärna till

Den första tryckningen lägger till en stjärna, sen börjar den ta bort stjärnor, och den cyklar runt så det är bara att trycka till du är nöjd.

Det coola är att det såklart också går att som vanligt lägga till och ta bort stjärnor och använda resten av org-mode med indrag, utdrag etc som org-mode kan göra.

Åh och det andra coola är ju att det funkar även när det står något på den rubriken. Jag ställer cursor efter stjärnorna och mellanslaget och sen kan jag cykla det in och ut.

Vill jag göra vanliga blankrader kan jag trycka C-RET och det funkar t.om. bättre än gamla RET i org-mode eftersom jag slipper dom där extra indragen (och när jag vill ha dom så kan jag trycka på C-j).

Mitt workflow är att jag ofta använder fantastic-ret (som jag dvs har mappat till vanliga returknappen) när jag först gör min outline, och vill jag skriva något i bröden under en viss rubrik då trycker jag C-RET för att göra det.

* skriva skriva skriva
** RET RET skriva skriva skriva
** RET skriva skriva skriva
*** RET RET skriva skriva
C-RET skriva lite här inne
RET nästa rad här inne
RET
C-RET för blankrader behövs C-RET
*** RET RET kom ut hit igen
**** RET RET nu är jag här
*** RET RET RET nu är jag tillbaks här inne
** RET RET RET nu är jag här
** RET fortsätter här
RET RET RET RET det går också att cykla sig in till icke-outline
RET och forsätta skriva där
RET
C-RET men för blankrader behövs fortfarande C-RET
** RET RET och nu tillbaks till där jag var i outlinen!

Dvs, ett RET betyder “fortsätt på samma nivå” och sen är flera RET i rad ganska så DWIM speciellt eftersom det cyklar igenom dom och man kan se vad som händer.

Men när jag skriver långa textstycken så händer det ofta att jag växlar mellan org-mode och text-mode, för att kunna göra blankrader lätt.
 

2097

deleta mitt konto tack
Joined
20 Sep 2014
Messages
3,643
Jag använder också pandoc till att göra mina A7-kort när jag preppar. Vissa gör jag i markdown, vissa i org-mode, beror på lite vad jag behöver göra på kortet. Har ganska mkt egna templates till TeX och egna writers och readers till pandoc.
 

Björn Wärmedal

Björning Wheel
Joined
29 Dec 2007
Messages
3,615
Location
Umeå
Har du någon verktygsuppsättning som gör det lättare och behagligare att läsa på forumet? Jag har funderat på att skriva ihop något i bash (det renderar inte så snyggt i lynx), men det känns som lite för mycket jobb. Underligt nog är kanske den största bromsklossen för att starta ett sånt projekt det faktum att jag inte vet hur en skickar med cookies i curl... Som om det vore svårt att kolla upp.
 

2097

deleta mitt konto tack
Joined
20 Sep 2014
Messages
3,643
BW: Jag började med ett w3m-baserat härke men det föll sig på att wrnu använder så mkt ajax.

Att göra en read-only grej (och då slopa kakorna) skulle ju funka med någon typ av scrape:r; jag brukar använda xmlstarlet i skalet när jag vet att sidan är wellformed (ex vis api:er) och htmlprag i chicken scheme när jag vet att sidan är ett buggigt härke. Men jag vill ju kunna posta också?

Så det jag gör är att läsa med vanliga Firefox och så klipp och klistrar jag mellan textfältet och emacs :/ lite bökigt.
 

2097

deleta mitt konto tack
Joined
20 Sep 2014
Messages
3,643
Iofs. Jag varnade Mac-användare att Leave the Hall i trådstarten men det finns ju markdown-editors (vissa rätt snygga och grafiska) till dom också och pandoc finns också. Dom kan säkert kladda ihop något vettigt från den här tråden om dom har huvet på skaft.
 

kloptok

Pensionerad astrolog
Joined
14 Dec 2008
Messages
1,250
Location
Stockholm
Mac-användare här. Tack för tipset om pandoc – otroligt användbart hjälpmedel ju! Installerade precis med homebrew och satte genast igång och började konvertera mina markdown-anteckningar till pdf bara för att testa, funkar ju utmärkt!

EDIT: Och den fixar LaTeX-matte också. Och gör tabeller. Fantastiskt!
 

Fiktionslek

Suldokar's Wake Whitehack Oktoberlandet
Joined
23 Aug 2006
Messages
1,422
Jag började använda emacs i slutet av 90-talet (min första linuxdistro var Slackware och sedan Debian Slink) och använde den som ordbehandlare ända fram till 2009, då jag bytte till mac och småningom Scrivener. När jag började fanns varken pandoc, markdown eller org, så jag använde LaTeX för mina två första böcker och brydde mig inte om att följa utvecklingen inom märkuppspråk och emacs-modes. Den här posten fick mig att gå tillbaka till emacs. Org+pandoc+zotero/org-ref är otroligt kraftfullt! Det finns ingen anledning att använda scrivener, ulysses eller ia writer längre -- inte ens estetiskt -- om man har grundläggande unix-kunskaper och är beredd på att lära sig lite mer. Det man vinner är en mycket kraftfullare, säkrare och snabbare ordbehandlare som har en tendens att ta över mer och mer av ens dagliga digitala göromål (t.ex. git, och en del använder tydligen som kalender, mejlläsare, browser ...).

Mina tips:

writeroom-mode + org-mode + pandoc-mode blir väldigt snyggt och ögonvänligt med zenburn-tema och följande justeringar: toggle-wordwrap, toggle-truncate-lines, fringe-mode --> no-fringes. Jag brukar justera till 66 i teckenbredd med writeroom-decrease-width. Vill man ha en enkel filhanterare bredvid finns neotree.

För akademiker är det möjligen bra att veta att man i ett org-dokument kan hänvisa till källor genom att använda referenser i pandoc-stil, dvs. inte nödnvändigtvis i org-stil. Istället för cite:key kan man använda [@key] eller [-@key] -- det senare en funktion som jag inte lyckats hitta i org. Det funkar inte för en snabbexportering via org vad jag kan se (dvs. källorna exporteras då som nycklar), men poängen med pandoc är ju att man låter pandoc sköta exporteringar, och då funkar det utmärkt. Man kan använda org-ref för att snabbt söka i en zoterogenererad bibtex-fil inuti emacs. På det här viset kan man ha alla hänvisningar (inklusive pdf:er) i zotero, vilket gör att man snabbt kan byta till word eller openoffice om man t.ex. får i uppdrag att redigera något med track changes på. En fördel med pandoc i förhållande till word är också att man som redaktör kan rensa upp en formateringsmässigt hopplös word-fil på ett ögonblick genom att omvandla någons word-fil till pandoc-markdown och sedan tillbaka till word (eventuellt via en exempel-fil som ger de stilmallar du vill ha). Pandoc genererar också som default väldigt bra word-filer med få och kloka stilmallar.

Ett annat tips för mac-användare är att binda om tangenterna lite. Jag har satt capslock som control samt höger command som altgr och höger alt som control. Det gör tangentbordet mer emacsvänligt. C-p, C-n, C-f och C-b är *värt* att lära sig använda istället för piltangeterna, särskilt i kombination med C-r och C-s, för att snabbt förflytta sig i ett dokument. Eftersom emacs bygger helt på tangentkommandon kan man också stänga av styrplattan medan man skriver (5 alt -- samma för att slå på igen), så slipper man komma åt den och skapa irriterande hopp (jag kan inte fatta att man inte har bättre mjukvara för att bortse från oavsiktliga snuddar på senare mbp när de har så stora plattor!).

Emacs har även en funktion för att använda google translate inline.

Det finns en org-app för smart-phone.

Tack 2097 för tipsen!

Hälsar

Christian
 

wilper

Gubevars en rätt produktiv människa.
Joined
19 May 2000
Messages
8,078
Location
Nordnordost
Även windowsanvändares och linux-användares tillvaro med emacs blir mer behaglig om de byter Caps-Lock mot en Ctrl.
 
Top