what does means #+keyword: means in org buffer - emacs

in emacs org mode, I saw #+ prefix many times. I think this is like option but I don't know what it is. I have tried to know them, I have been googling, but I couldn't find any good document. anybody know these symbol? is this org macros?

It is just plain text that you write in an org mode file. It may have two different functions:
1.- If you write it at the beginning of the file, it serves as a metadata descriptor or to include options for the file [1]. For example:
#+TITLE: This is the title of this file
#+AUTHOR: Loretta
#+DATE: 2022-10-15
#+STARTUP: content <--- option for displaying the contents
#+OPTIONS: H:3 toc:nil \n:nil #:t ::t |:t <--- different export options
2.- To create a block inside the file. This block may be code meant to be executed [2], a quotation, a comment, etc:
#+begin_src emacs-lisp
(+ 1 2 3 4 5 6 7)
#+end_src
#+begin_comment
Check the following paragraph. I am not really sure if it
has taken into account all the variables.
#+end_comment
[1] See https://orgmode.org/manual/In_002dbuffer-Settings.html for buffer settings and https://orgmode.org/manual/Export-Settings.html for export settings.
[2] See https://orgmode.org/manual/Literal-Examples.html for code blocks.

Related

Internal org mode links not exporting when buffer is narrowed

I need to periodically export to markdown various parts of a narrowed org buffer. When I run org-md-export-as-markdown (with org-export-with-broken-links set to t), the export works fine, except that all the links pointing to parts of the buffer outside the narrowed range fail to export.
For example, consider a buffer that contains the following text:
* Heading 1
** Heading 2
See [[*Heading 1][heading 1]].
The result of invoking org-md-export-as-markdown when the buffer is narrowed to Heading 2 is the following:
## Heading 2
See .
I tried using unique IDs instead, but the behavior is the same. Is there an org variable that controls how these links are exported, or a workaround to force Emacs to include these links? I understand that, since they point to a reference that doesn't exist in the exported file, the links would not work. However, I can easily automate the process of fixing these broken links, whereas if the links do not export at all, my only option is to recreate them manually.
My Org version is 9.4.4.

Emacs: How to associate different initialization configurations with different file formats?

What's the best way to associate file extensions with my own customizations? For example, when I open a .py file the frame would be bigger and split into 2 windows, but when a .tex file is opened the frame would be smaller with just one window. Should I split my .emacs and write all configurations associated with python in a .el file (key bindings, python shell = ipython, etc ...) and for latex in another .el file (load auctex, pdf mode = default, etc ...)? How would I "call" the files and make them work appropriately (if that'a possible and good solution)?
(First, +1 to #phils's comment. You will get better help if you are more specific about what you need/want.)
Depending on just what you need/want, see also variable (not option) file-name-handler-alist. You might not need it, but you might.
You can make use of it if you intend all or particular operations on the files to involve additional actions (such as those you describe). For any operations where you do not need special treatment, just provide the default behavior. For the others, provide the default behavior plus the extra behavior (in whichever order is appropriate).
See (elisp) Magic File Names for more information.

org-mode: Adding bibliography

Every time I want to convert an org-file to pdf using org-mode, I need t write the following lines at the end of my file:
* References:
\bibliographystyle{plain}
\bibliography{/path/to/my/bibfile}{}
In org-mode there is the command <s TAB to insert a
#begin src
#end src.
Is there something similar for the bibliography? I would like to have these line automatically added to my files, each time
I fire some <s-command.
Two answers for the price of one:
Look at the easy templates (section 15.2 of the manual) or
Use YASnippet therefore (more generic, and usable in all Emacs parts!).

Org-Mode Tags inside text instead of Headline

I have a half-made latex presentation in a org-mode file. I want to insert tags in paragraphs which are incomplete. Something along these lines,
* Related Work
Prior work was done by ... :incomplete:
Is this possible?
The solution might be in transforming your plain lists or lines to headlines
* Prior work was done by ... :incomplete:
and use following line into the .org file header
#+OPTIONS: H:2 num:2
that describes to which level headlines are enumerated and included into table of contents.

How to ignore a local variables list in text?

I'm writing the readme (in org-mode) for a new emacs mode, and in the installation instructions we have how to enable the mode on a per-file basis:
or at the end of your file:
#+BEGIN_SRC emacs-lisp
! Local Variables:
! mode: f90-namelist
! End:
#+END_SRC
The problem is that this puts the README.org file into our new f90-namelist-mode and not org-mode. Putting another local variables list at the end of the file with # mode: org doesn't work, although putting
# -*- enable-local-variables: query -*-
lets me accept or reject all of the local variables, and emacs then determines the major mode from the .org file extension. This then precludes having any other local variables I might like to include.
Is there a more elegant way to include a literal local variables list in the text?
Quoting from the Emacs manual:
The start of the local variables list should be no more than 3000
characters from the end of the file, and must be on the last page if
the file is divided into pages.
So to make sure your in text local variables will be ignored, add a page break (C-q C-l) before the real list of local variables or at the end of the file if you don't have local variables:
or at the end of your file:
#+BEGIN_SRC emacs-lisp
! Local Variables:
! mode: f90-namelist
! End:
#+END_SRC
^L
This will work for all local variables, not only the major mode.
If you don't want to export the page break, just comment it, as suggested by #lunaryorn.
Here's how iostream header looks like:
// Standard iostream objects -*- C++ -*-
...
This is the standard way to specify the mode not only in Emacs,
but on the whole of Linux, for all editors, which choose to parse it.
I recommend you to go this way.
Also, enabling local variables is a faux pas from my viewpoint,
as it can lead to a mess that Microsoft Word had with VBA: viruses everywhere.
Source code or documents should not execute themselves.