\includeonly not working as expected with newclude - latex

In LaTeX, the \includeonly statement exists to selectively add or exclude sub-documents.
One quirk in the whole process is that when sections are excluded, LaTeX decides to insert a page-break. The article at To have no pagebreak after \include in LaTeX recommends using newclude to avoid this issue. This package defines \include* which provides a work-around by omitting the implied \clearpage.
I am occasionally seeing the behaviour where if I comment out lines of my \includeonly statement the sub-document still gets included. Has anyone else seen this behaviour?

For whatever reason, everything is now working as it should.
Just in case the order of the \usepackage directives is important, in the working version \usepackage{newclude} is the first command after \documentclass{article}.

It's not a bug, it's a feature. Really. Does \input do what you need, rather than \include?

Related

Sharelatex generates only dot on on first reference, instead of reference

I'm trying to compile a LaTex file online with sharelatex. It works fine, but on top of my generated references the first seems to be broken. It only shows " [1] ." . All other 25 references seem to be fine. It is also awkward that the [1] reference doesn't even appear in the document anywhere.
I'm not sure, but I think this warning might be connected, since it is the only one I get:
/usr/local/texlive/2017/texmf-dist/tex/latex/biblatex/blx-bibtex.def Package biblatex Warning: Using fall-back BibTeX(8) backend: functionality may be reduced/unavailable.
The bibilography is generated with \printbibliography
I found a solution after looking on the right forum:
https://tex.stackexchange.com/questions/365060/warning-using-fall-back-bibtex8-backendbiblatex-functionality-may-be-redu
I had to use
\usepackage[backend=bibtex,style=numeric,sortcites,natbib=true,sorting=none]{biblatex}
instead of
%\usepackage[backend=bibtex, style=numeric]{biblatex}
I still don't really get why it works now. The warning is still displayed, but the problem with the first reference is gone. When i try to use biber with \usepackage[backend=biber, style=numeric]{biblatex} it simply doesn't output any table of references.
edit:
It seems what I thought fixed it here didn't, but just hid the broken reference in between fine ones. I made a mistake in the .bib file, one closing bracket } to much. I didn't notice it before because I didn't know how to assassinate the broken reference with its counterpart in the .bib file.

Simple preprocessor for latex: detect whether you are an included file or being compiled stand-alone

I work on a huge script in \latex.
I want to be able to compile each of the chapters as stand-alone, because it is easier for hacking sessions with Latex.
On the other hand, I would like to maintain a document which encompasses the whole script so far written.
I do not know how to maintain both these documents without permanently annoying overhead, as a tex-file can either be written stand-alone or to be included.
It would be great help to have something a Latex-preprocessor available that is capable of C-like #define and #ifdef-#else-#endif statements. This would facilitate writing to a great extent. Do you know whether something like this exists in latex, or how can you do something equivalent? Google hasn't supplied me with a satisfying answer to this.
EDIT:
Some remarks in order to avoid misunderstandings: I am aware of the very simple built-in TEX-preprocessor, but these commands don't work properly as I expected. Hence a reference to these will not help me out.
The chapters in my script shall look something like this (Pseudo-Code)
IF being_just_included defined
%No header here, and document has already begun
ELSE
\input{common_header.tex} %Header things all my documents use
\begin{document}
ENDIF
%%% Lots of stuff
IF being_just_included defined
%Nothing to do here
ELSE
\end{document}
END IF
In contrast, my complete script source file should look like this
\input{common_header.tex}
DEFINE being_just_included
\begin{document}
\input{preamble.tex}
\input{first_chapter.tex}
\input{second_chapter.tex}
\input{third_chapter.tex}
\end{document}
Could you post a code which performs something like this?
Thank you very much for this package and the hint to the forum.
After some time I've figured out there exists a tex preprocessor, which is similar to the CPP. Maybe not well-engineered, but it serves my purpose quite well.
The magic lines are:
\def\justbeingincluded{justbeingincluded}
\ifx\justbeingincluded\undefined
\fi
to be used appropiatly within the respective source files.
One way of doing this is to use the standalone package, intended for this specific purpose.
You may also care to browse through, and perhaps join, TeX and Friends.

Latex \tableofcontents command always shows blank Contents on first build

When I generate a .pdf file from a .tex file using pdflatex, only the "Contents" title is shown with no actual TOC. If I run pdflatex my.tex once more, it generates the TOC just fine. I can reproduce this simply by removing the .toc file. What I think is happening is that my .toc file is being generated too late -- so how can I make the TOC work first time? Should I be generating the TOC beforehand without using pdflatex?
This is normal. LaTeX document need several compilations to reach a stable state. Use rubber -d my to compile the right number of times (rubber comes as a package on many linux distros).
I might be mistaken, but I think, that this is the default behaviour. I assume, you also won't find correct cross references (footnotes, end notes, literature) after the first run of pdflatex.
The point is, that LaTeX needs the extra rounds to resolve the references pointing inside the document, to get numbering and page numbers right.
I experienced the same problem with the editor Latexian. What solved the problem was changing the preferences. I changed "Number of typesetter runs at end" to 3, instead of the default 1. Then I added the "Refresh" button to the toolbar and tried refreshing and it worked.

Referencing a theorem-like environment by its [name]

I am using ntheorem to typeset a set of conditions. In my preamble I have:
\theoremstyle{empty}
\newtheorem{Condtion}{Condtion}
When I want to typeset a condition, I write:
\begin{Condtion}[name]
\label{cnd:nm}
foo foo foo
\end{Condition}
The name appears boldface on the same line as the start of the text of the condition, with no number or anything. Perfect.
What I want to do now is refer to the condition by some variant of the \ref command,
\ref calls the number [which is not displayed anywhere else]
\thref writes "Condition n" for the nth condition
\nameref writes the name of the SECTION of the label.
a zref solution was suggested here, but seems unsatisfactory and unwieldly.
Any suggestions on a simple way to do this? (Even a simpler zref solution would be nice) At the moment I've just defined a \newcommand for each condition and use that rather than citing the condition itself. This is semantically opaque and just unsatisfying...
(edit: I emailed one author of ntheorem, Wolfgang May, and he explained that there isn't really a way to do this within ntheorem, since the [name] option isn't recorded.)
(edit: This isn't a dupe as suggested in the comment, since I'm interested in referencing an environment by its optional name command, not referencing the section/chapter it sits in.)
I think the following may do what you want.
\makeatletter
\def\namedlabel#1#2{\begingroup
\def\#currentlabel{#2}%
\label{#1}\endgroup
}
\makeatother
Then you use it as
\begin{theorem}
\namedlabel{thm:seamus}{Seamus' Theorem}
Here is Seamus' Theorem.
\end{theorem}
Here I reference~\ref{thm:seamus}.
Unfortunately, it can then only be referenced by name, though I suppose you could use a normal \label as well (with a different key of course).
For the amsthm environments you can use
\makeatletter
\let\#old#begintheorem=\#begintheorem
\def\#begintheorem#1#2[#3]{%
\gdef\#thm#name{#3}%
\#old#begintheorem{#1}{#2}[#3]%
}
\def\namedthmlabel#1{\begingroup
\edef\#currentlabel{\#thm#name}%
\label{#1}\endgroup
}
\makeatother
nameref doesn't work: it references the title of the SECTION the theorem-like environment appears in.
This is a nameref bug that was already fixed a while ago:
http://web.archiveorange.com/archive/v/9uUx5EuqoCGynIvx3om7#lY2MJxvge2oMgOi
Unfortunately some Linux distros like Debian/Ubuntu ship with horribly old versions of the packages (Ubuntu 11.04 still ships TeX Live 2009 although the latest version is TeX Live 2011). If you're using such a Linux distro stop using the Tex Live package in the distro, and install TeX Live directly from here: http://www.tug.org/texlive/ You can then update packages using tlmgr (a really cool tool that doesn't ship with Debian/Ubuntu).
you may want to check out the nameref package, which is distributed with hyperref. There is a section in the nameref documentation about referencing "stuff".
More on referencing can be found in the TeX FAQ item Referring to things by their name.
I thought others might find this helpful. Even though I had an updated hyperref package installed, I had to explicitly call \usepackage{nameref} after \usepackage{hyperref} in order to get the correct behavior from \nameref. Without the explicit call to \usepackage{nameref}, \nameref worked, but exhibited the bug discussed in this thread.
Update: this workaround isn't requred for a minimal example (which I checked). I don't know if there's something more complicated going on in my style files, but I'll update this if I find something. This may still help someone running into the same issue I was.

Adding MS-Word-like comments in LaTeX

I need a way to add text comments in "Word style" to a Latex document. I don't mean to comment the source code of the document. What I want is a way to add corrections, suggestions, etc. to the document, so that they don't interrupt the text flow, but that would still make it easy for everyone to know, which part of the sentence they are related to. They should also "disappear" when compiling the document for printing.
At first, I thought about writing a new command, that would just forward the input to \marginpar{}, and when compiling for printing would just make the definition empty. The problem is you have no guarantee where the comments will appear and you will not be able to distinguish them from the other marginpars.
Any idea?
todonotes is another package that makes nice looking callouts. You can see a number of examples in the documentation.
Since LaTeX is a text format, if you want to show someone the differences in a way that they can use them (and cherry pick from them) use the standard diff tool (e.g., diff -u orig.tex new.tex > docdiffs). This is the best way to annotate something like LaTeX documents, and can be easily used by anyone involved in the production of a document from LaTeX sources. You can then use standard LaTeX comments in your patch to explain the changes, and they can be very easily integrated. If the document lives in a version control system of some sort, just use the VCS to generate a patch file that can be reviewed.
I have used changes.sty, which gives basic change colouring:
\added{new text}
\deleted{old text}
\replaced{new text}{old text}
All of these take an optional parameter with the initials of the author who did this change. This results in different colours used, and these initials are displayed superscripted after the changed text.
\replaced[MI]{new text}{old text}
You can hide the change marks by giving the option final to the changes package.
This is very basic, and comments are not supported, but it might help.
My little home-rolled "fixme" tool uses \marginpar where possible and goes inline in places (like captions) where that is hard to arrange. This works out because I don't often use margin paragraphs for other things. This does mean you can't finalize the layout until everything is fixed, but I don't feel much pain from that...
Other than that I heartily agree with Michael about using standard tools and version control.
See also:
Tips for collaboratively editing a LaTeX document (which addresses you main question...)
https://stackoverflow.com/questions/193298/best-practices-in-latex
and a self-plug:
How do I get Emacs to fill sentences, but not paragraphs?
You could also try the trackchanges package.
You can use the changebar package to highlight areas of text that have been affected.
If you don't want to do the markup manually (which can be tedious and interrupt the flow of editing) the neat latexdiff utility will take a diff of your document and produce a version of it with markup added to visually display the changes between the two versions in the typeset output.
This would be my preferred solution, although I haven't tested it out on large, multi-file documents.
The best package I know is Easy Review that provides the commenting functionality into LaTeX environment. For example, you can use the following simple commands such as \add{NEW TEXT}, \remove{OLD TEXT}, \replace{OLD TEXT}{NEW TEXT}, \comment{TEXT}{COMMENT}, \highlight{TEXT}, and \alert{TEXT}.
Some examples can be found here.
The todonotes package looks great, but if that proves too cumbersome to use, a simple solution is just to use footnotes (e.g. in red to separate them from regular footnotes).
Package trackchanges.sty works exactly the way changes.sty. See #Svante's reply.
It has easy to remember commands and you can change how edits will appear after compiling the document. You can also hide the edits for printing.

Resources