This authoritative work comprises three parts: “Propositional Logic,” “Predicate Logic,” and “Foundations and Variations.” Specialized books, such as the excellent Huth and Ryan work , devote less space to building propositional and predicate logic up, and impart more of an operational mastery to their readers that is complementary. Each page of this work is substantive without excess, and provides a depth of understanding that will help with the specialized books. I found it true that “this ... introduction to logic ... presents all the major forms of proof--trees, natural deduction in all its major variants, axiomatic proofs, and sequent calculus” (from the book’s dust cover).
Footnotes always present an irresistible temptation to me: I read many of them compulsively, instead of relegating them to subsequent perusals of a book. In the case of this meticulously written work, they are certainly worth reading and pondering, as they exhibit the same clarity as the main text. Note 1 for chapter 15, “Other Methods of Proof,” accurately summarizes the author’s scope and pedagogical philosophy as follows:
This book does not offer multiple first routes into logic for the beginner: a route via trees, a route via natural deduction, [an axiomatic route, and a route via the sequent calculus]. It offers one such route--which goes via trees [tableaux]--and then in this chapter [chapter 15] provides an overview of the other proof methods.
I’ll add that the explication of the complementary three routes, axiomatics (Hilbert-Frege), natural deduction (Gentzen and others), and sequent calculus, will reward any reader with very useful insights into the strength and focus of these other styles. The author is as clear, if not as detailed, about these as he is about the tree route to logic.
Though the concept of proposition is fully and organically developed only by the end of the book, useful and increasingly elaborate notions begin in chapter 1. A proposition is a claim about the world that can be judged as being true or false (and nothing else). “Every piece of reasoning can be represented as an argument” with propositions as premises and a proposition as conclusion. Validity is defined by necessary truth-preservation (NTP) (the conclusion can’t be false if the premises are all true) and NTP by virtue of the argument’s structure. Validity must, however, be determined in a foolproof (mechanical) and general manner. Chapters 2 through 4 elaborate the syntax and semantics of propositional logic using the usual not, and, or, and what is in other books called implies. The author expends good effort ensuring that the connectives are consistently truth-functional. Chapter 5 brilliantly establishes and enumerates valid argument forms.
Every mathematico-logical modeler, specifier, designer, and programmer should read chapter 6, “Connectives: Translation and Adequacy.” Our designs or programs, including the truth tables, become our world, and this is our occupational hazard. The author brings the work of Grice  very fruitfully to bear on this issue. For example, he makes crystal clear why a hypothetical (subjunctive) connective is not truth-functional, but a (material) implication is. I recall also having had trouble with the glib assertion  that “unless” translates to the “or” connective; I had translated it to “not equal.” The present author discusses both, substantially vindicates the “or” translation, and imparts the insight that I’ve been waiting for.
The main proof mechanism of the book on trees and semantic tableaux is introduced in chapter 7, via propositional logic and the notion of an effective (finite, mechanical) procedure that determines whether a set of propositions is satisfiable. Chapters 8 through 14 then elaborate predicate logic plus its metatheory, wherein models replace truth tables. Soundness, completeness, and decidability are expounded upon in masterly fashion, culminating in a complete elaboration of general predicate logic with identity (GPLI). The treatment of the identity predicate is the best I’ve encountered. Ditto, in chapter 15, regarding Gentzen’s cut elimination and the deduction theorem. Chapter 16, on set theory, lives up to the rest of the book in explicating intension, extension, and the advantage of having an equality property for sets of objects over the lack of one for attributes.
You will find this book outstanding whenever you read it, but you’ll be even smarter if you read it before other, even excellent, logic books in your library.