Topics (384k) Articles (398k) Users (410) Discussions (242) Comments (383) Files (13k) New article
A CSS computed value is the result of processing a property's specified value as far as possible without performing the layout-dependent calculations reserved for later stages. Computation resolves details such as inheritance and many relative units; the exact rule belongs to each CSS property.[ref]
CSS Cascading and Inheritance Level 5 by World Wide Web Consortium. Value Processing, Computed Values
For example, if a parent has a computed font size of 20 CSS pixels and its child specifies
font-size: 150%, the child's computed size is 30 pixels. A descendant inheriting that font size receives the computed result, rather than the original percentage expression.Not every relative expression disappears at this stage. A percentage width can remain a percentage until the containing width is known. Similarly, a unitless
line-height: 1.5 computes as a number under that property's definition; when inherited by text with a 24-pixel font size, it can yield a 36-pixel used line height. Copying the parent's final pixel height would be a different operation.[ref]CSS Cascading and Inheritance Level 5 by World Wide Web Consortium. Computed Values and Inheritance
[ref]The computed stage therefore supplies a stable representation for inheritance without promising that every value is a final numeric measurement. To turn it into a CSS used value, the formatter can still need containing dimensions, content measurements and the relevant box-layout algorithm.
A CSS used value is a value obtained after applying the calculations needed for layout. It can depend on geometry unavailable when the CSS computed value was established, such as the size of a CSS containing block or the sizes of related content.[ref]
CSS Cascading and Inheritance Level 5 by World Wide Web Consortium. Value Processing, Used Values
For example, an ordinary block whose computed width remains 50 percent can have a used content width of 200 CSS pixels in a 400-pixel containing block. Changing that containing block to 600 pixels yields 300 pixels, with the same computed percentage and with other constraints held fixed. The changed result follows from layout context rather than from a new source declaration.
A used width is also not necessarily the size of the whole outer box. With content-box sizing, padding, borders and margins are accounted for outside the content width. With
box-sizing: border-box, the sizing edge is different. CSS minimum size and CSS maximum size constraints can alter the final result as well.[ref]CSS Box Sizing Module Level 3 by World Wide Web Consortium. Preferred size, minimum/maximum sizes and box-sizing
Even after the used value has been determined, drawing on a particular device can require rounding or other permitted approximation. A fractional CSS length and a count of illuminated physical pixels are consequently different measurements. Stating the property, value stage, sizing edge and coordinate units makes a layout calculation reproducible.
A CSS minimum size is a lower constraint imposed by a minimum-size property such as
min-width or min-height. It can prevent a CSS preferred size or available space from shrinking the generated box below a specified dimension.[ref]For a simple content-box block with no padding or borders,
width: 180px; min-width: 240px produces a width of CSS pixels, assuming no other relevant constraint. If its containing width is only pixels, the minimum still does not automatically become : the box can extend beyond its container. The resulting CSS overflow is a separate issue from whether the minimum was obeyed.Contradictory bounds are also resolved systematically. With
width: 180px; min-width: 320px; max-width: 200px, the -pixel minimum takes precedence over the smaller CSS maximum size in this ordinary sizing case. A constraint interval whose upper endpoint is below its lower endpoint cannot be satisfied literally; the layout rules specify which requirement governs.[ref]Visual formatting model details in CSS 2.2 by W3C. §10.4, final minimum-width step
The value
auto should be interpreted using the relevant specification and layout context; modern layout modes can give an automatic minimum content-dependent behavior. It is not universally interchangeable with explicitly writing zero. When diagnosing a box that refuses to shrink, inspect its minimum constraints, CSS box-sizing and layout rules rather than only its declared preferred width.A CSS maximum size is an upper constraint supplied by a maximum-size property such as
max-width or max-height. It participates in finding the CSS used value, together with the CSS preferred size, CSS minimum size and applicable layout rules.[ref]For a simple block with zero padding and borders,
width: 500px; max-width: 400px; min-width: 240px gives a used width of CSS pixels. With the same constraints but preferred width , the used width is . Once these fixed dimensions are resolved, this simplified calculation iswhere is the tentative width, the minimum and the maximum. It expresses the order of limiting the tentative width and then enforcing the minimum in this case.[ref]If the minimum exceeds the maximum, the minimum wins:
min-width: 320px; max-width: 200px does not squeeze the box below its -pixel minimum. Also check CSS box-sizing before interpreting which edge the numbers measure.A maximum constraint limits the box's size; it does not guarantee that every unbroken descendant fits or specify clipping. Such content may cause CSS overflow. Percentage constraints likewise require the appropriate CSS containing block and a usable dimension reference. These qualifications make
max-width: 100% a sizing instruction rather than a universal promise that nothing can extend outside a container.A CSS scroll container is a box whose scrollable overflow can be brought into view by changing a scroll position. Its viewing region is the CSS scrollport, normally coinciding with its padding box. The extent of the scrollable contents can be larger than that viewing region.[ref]
CSS Overflow Module Level 3 by World Wide Web Consortium. §2.3, scroll container, scrollport and scroll position
Consider a simplified horizontal left-to-right example with a scrollport CSS pixels wide and contents occupying coordinates through . At scroll position zero, the visible interval is . At position , it is . In this stipulated geometry the maximum displacement is pixels. The example omits scrollbar size, padding complications and content extending in the opposite direction; it is an interval calculation, not a universal formula for every writing direction.
A scrollbar is not the definition of a CSS scroll container.
overflow: hidden suppresses ordinary scrolling controls but can still permit programmatic scrolling, whereas overflow: clip forbids scrolling and does not create a scroll container. overflow: auto applies scrolling behavior as required by its rules.[ref]CSS Overflow Module Level 3 by World Wide Web Consortium. §3.1, hidden, clip and auto
Scrolling changes which part of the laid-out contents is viewed. Descendant DOM nodes outside the scrollport can still exist in the document; clipping alone does not remove them. Conversely, a large DOM tree does not guarantee a large scrollable region if layout or overflow rules prevent it.
Distinguish this viewing mechanism from CSS containing block geometry and CSS flow-root. A containing block supplies layout references, while an independent formatting context governs layout participation. Neither term alone establishes that the contents can be scrolled.
CSS margin collapsing combines eligible adjoining vertical margins into one collapsed margin. In the horizontal text layout described by CSS 2.2, this can occur between ordinary in-flow block boxes and in specified parent-child or empty-block situations. It does not mean that every pair of nearby margins is added or collapsed.[ref]
For two eligible sibling blocks, a first block's bottom margin of CSS pixels and the next block's top margin of give a collapsed margin of , not . Positive adjoining margins contribute their largest value.
Negative values make the rule more interesting. For a collapsing group with a positive margin of and a negative margin of , the result is pixels. With only and , it is , not . More generally, take the largest positive value, or zero if none, and subtract the largest absolute negative value, or zero if none.[ref]
Eligibility comes before arithmetic. Horizontal margins do not collapse under these rules, and margins of a CSS inline-block box do not collapse with surrounding boxes or its in-flow children. A parent's top border or padding can prevent the top parent-child collapse that would otherwise occur. Establishing a separate CSS block formatting context also changes the relevant parent-child relationships.[ref]
Box model in CSS 2.2 by W3C. §8.3.1, inline-block and block-formatting-context exclusions and parent-child cases
A useful debugging example is a parent's first child's top margin apparently moving the whole group rather than creating an internal gap. Inspect whether those margins are adjoining before changing unrelated dimensions. The CSS margin box describes a box's margin geometry, while CSS margin collapsing specifies how eligible margins interact during layout.
CSS inline size is a box's extent parallel to text flow within a line. It corresponds to physical width in a horizontal CSS writing mode and physical height in a vertical writing mode. The
inline-size property provides the corresponding flow-relative sizing control.[ref]CSS Writing Modes Level 4 by World Wide Web Consortium. §6.1, inline dimension and inline size; §6.4, mappings
[ref]CSS Logical Properties and Values Module Level 1 by World Wide Web Consortium. §4.1, block-size and inline-size properties
For an own definite-size example, let
inline-size: 180px; block-size: 60px; apply to a simple box with no padding, borders or competing constraints. Under horizontal-tb, the physical rectangle is by CSS pixels. Under vertical-rl, it is by . Inline size remains in both descriptions because the inline axis changes with the writing mode.CSS box-sizing determines which box dimension a declared size constrains. For example, with
box-sizing: border-box; inline-size: 80px;, ten-pixel padding and two-pixel borders on each inline side leavepixels of content extent along that axis, assuming no other sizing constraint intervenes. The outer inline extent is eighty, not fifty-six.Logical and physical properties can address the same underlying dimension. With equal cascade priorities in horizontal writing,
width: 100px; inline-size: 200px; supplies a later declaration for the same physical width, so the latter wins. In vertical writing, width and inline-size address different dimensions: physical width can be while physical height is .[ref]CSS Logical Properties and Values Module Level 1 by World Wide Web Consortium. §4, paired logical/physical properties and cascading; §4.1, size mapping
A direction reversal alone does not change which physical axis is inline. Changing CSS inline direction from left-to-right to right-to-left can exchange inline-start and inline-end without converting a horizontal inline size into height. Likewise, CSS block size measures the perpendicular axis.
CSS block size is a box's extent in the dimension perpendicular to text flow within a line. It corresponds to physical height in horizontal writing and physical width in vertical writing. The
block-size property expresses that dimension without fixing one physical axis in its name.[ref]CSS Writing Modes Level 4 by World Wide Web Consortium. §6.1, block dimension and block size; §6.4, mappings
[ref]CSS Logical Properties and Values Module Level 1 by World Wide Web Consortium. §4.1, block-size and inline-size
For an own example,
block-size: 80px; inline-size: 200px; describes a -by- CSS pixel rectangle in horizontal-tb and an -by- rectangle in vertical-lr, under simple definite-size assumptions. The latter has block progression toward the right, but the dimension's magnitude remains eighty pixels.Box edges matter. With
box-sizing: content-box; block-size: 20px;, ten-pixel padding and two-pixel borders on both block sides give an outer block extent ofpixels. That outer extent is physical height in a horizontal writing mode and physical width in a vertical one. CSS box-sizing and the applicable constraints determine how the declared value relates to the content and border boxes.The declaration
height: 50px; block-size: 80px; also changes meaning with writing mode. In horizontal writing, both address physical height, so the later block-size wins when their other cascade priorities are equal. In vertical writing, height constrains the inline dimension while block-size constrains physical width; both values can apply independently.[ref]CSS Logical Properties and Values Module Level 1 by World Wide Web Consortium. §4, logical/physical property pairing and cascade; §4.1, size mapping
CSS block flow direction identifies the direction in which blocks progress, whereas block size is a measurement along that axis. Moving from
vertical-rl to vertical-lr changes the progression direction without swapping block size back to physical height.An automatic block size can depend on content and layout, while min/max sizing properties can constrain the result. The useful interpretation is therefore an axis-relative size with the box-model and layout assumptions stated, not a universal promise that one declaration always fixes the painted rectangle exactly.
CSS flow-root is the
flow-root display value that creates a block container establishing a new CSS block formatting context. It provides an explicit way to isolate the relevant flow-layout interactions without requesting clipping or scrollbars.[ref]A margin example makes the boundary visible. Suppose an ordinary block parent has zero margin, padding and border, automatic height, and one in-flow block child of height CSS pixels. The child has top margin and all other margins zero. Assume no other constraints or clearance. With ordinary
display: block, the child's top margin can collapse through the parent's top; the parent's content height is in this setup. With display: flow-root, the margin does not collapse across that context boundary, so the parent includes the thirty-pixel top margin and twenty-pixel child, giving height .[ref]CSS Display Module Level 3 by World Wide Web Consortium. Appendix A, margins across formatting-context boundaries
[ref]This does not disable every internal instance of CSS margin collapsing. Two eligible sibling blocks inside the new context can still combine adjoining margins of twenty and thirty pixels into thirty. The boundary separates contexts; it does not rewrite all spacing rules within one.
The modern display terminology also separates outer and inner roles.
display: inline-block corresponds to an inline outer role with a flow-root inner role. Thus a CSS inline-block box can sit in a surrounding line while independently formatting its contents.[ref]CSS Display Module Level 3 by World Wide Web Consortium. §2, display summary table
Finally, CSS flow-root is distinct from
overflow: hidden or overflow: clip. Those values concern CSS overflow, with their own clipping and scrolling behavior. Choose an independent flow context for its layout effect rather than treating all these declarations as interchangeable.Crystallographic symmetry consists of the spatial transformations that leave an ideal crystal structure unchanged, including the identities of its chemical atoms. A symmetry of the crystal lattice alone need not preserve the atomic basis of a crystal. The full set of crystal-preserving transformations forms a space group; its translational part distinguishes it from a crystallographic point symmetry description.[ref]
Symmetry by L. S. Dent Glasser. Sections 2–3: symmetry operations, crystal classes and periodic arrays
In fractional unit cell coordinates a space group operation has the form . The matrix describes its linear action and its translation. A screw axis combines a rotation with a translation parallel to the axis; a glide plane combines reflection with translation within the plane. For example, a twofold screw can act asApplying it twice gives , a full unit cell translation. Replacing it by a pure twofold rotation would lose this relation between orientation and position.
For ordinary three-dimensional periodic crystals, the possibilities are organized into 32 crystallographic point groups and 230 space groups. These counts concern spatial symmetry without additional magnetic labels. A square outline alone does not establish fourfold symmetry: decorating alternate corners with different atoms can break the rotation. In structure determination, the symmetry therefore constrains both the lattice geometry and which sites can carry equivalent chemical atoms.[ref]
Symmetry by L. S. Dent Glasser. Section 2, Table 1, and section 3: crystal classes and translational symmetry
Electron crystallography determines ordered molecular or atomic structure using electrons interacting with a crystalline specimen. Electron diffraction and suitably resolved electron images provide complementary constraints on a structural model. The periodic order supplies repeated information; interpreting that information still requires a model of scattering and image formation.
An important biological application resolved the alpha/beta tubulin heterodimer. Zinc-induced tubulin sheets provided an ordered specimen for a model reported at angstrom resolution. The resulting structure distinguished the two related protein subunits and their different nucleotide environments.[ref]
Structure of the alpha beta tubulin dimer by E. Nogales and others. Nature 391 (1998), 199–203; abstract and structural deposition 1TUB: electron crystallography of zinc-induced sheets.
The specimen geometry matters. An ordered sheet is not the same object as an isolated microtubule in a living cell, even when its molecules reveal features relevant to microtubule assembly. The structural experiment answers questions about the molecular arrangement under its preparation conditions; biological interpretation then connects that arrangement to other observations.
Resolution also differs from the size of the object. A sheet may extend over many molecular repeats while the data constrain features on the angstrom scale. Quoting a nominal resolution does not mean every atom is independently located with that exact uncertainty or that every flexible region is equally well resolved.
Electron crystallography belongs to the wider family of electron microscopy and crystallography methods, but should not be used as a synonym for every electron micrograph. A dark spot, an image of a cellular outline and a diffraction-constrained molecular model are different types of evidence.
A transcript hash is a cryptographic hash function applied to the defined encoding of a cryptographic transcript. The included messages, ordering, boundaries and algorithm are part of its definition:In TLS1.3 the inputs include handshake type and length headers but exclude record-layer headers. A retry has an explicit synthetic-message substitution; ordinary payload concatenation is not that protocol's definition.[ref]
The Transport Layer Security Protocol Version 1.3 (RFC 8446). §4.4.1, Transcript-Hash, included headers and HelloRetryRequest substitution
An original ten-byte example uses a deliberately separate toy format: one type byte, a two-byte big-endian payload length, then payload. The first message is
01 00 02 48 69, carrying ASCII Hi; the second is 02 00 02 4f 4b, carrying OK. The SHA-256 digest of these ten bytes in that order is2cd107ca2c002f392a6c26a4b2ed3caca0c23ecf0d67e3a790e787800caadc19.Reversing the two encoded messages gives
7efaeb2cd69eae34b41ea8316a104ba7964254bd86e9b9ba14df77bb29163b66.These are original computations, not TLS test vectors. Both message order and the encoded headers contribute to the input bytes.
Incremental hashing of a cryptographic transcript feeds those byte sequences into one continuing hash context and finalizes at the required point. It computes the same digest as hashing their full concatenation. Computing is a different operation: the finalized inner digest replaces the first message and introduces its own hashing boundary. A running internal state is not interchangeable with a completed digest.
An unkeyed transcript hash alone does not authenticate who spoke. A digital signature or message authentication code binds it to the required authenticated context. Nor can a hash recover message boundaries omitted by an ambiguous encoder. TLS's Finished message illustrates the separate authentication step by applying HMAC to the specified transcript hash.[ref]
A cryptographically negligible probability is a function of the cryptographic security parameter that eventually becomes smaller than every inverse power of that parameter. Formally,The threshold may depend on . This is the inverse-polynomial definition of negligibility used in asymptotic cryptography.[ref]
In a World of P=BPP by Oded Goldreich. Printedp.107, preliminary definitions of negligible and noticeable probabilities
For example, is negligible because an exponential eventually dominates every fixed power. The function is not negligible: it exceeds whenever . Even the constant is not negligible as a function of , although it is numerically small. Negligibility describes a family of experiments as the parameter grows, rather than a synonym for “unlikely” in one experiment.
An original closure calculation explains why the definition is useful. Suppose an adversary gets at most attempts and each has success probability at most . The union bound gives total success probability at most , without requiring independent attempts. Given any , negligibility with exponent eventually givesThus a polynomial number of opportunities preserves negligibility. A concrete numerical guarantee still requires an explicit bound at the chosen parameter; the asymptotic quantifiers alone do not supply that value.
Cryptographic distinguishing advantage measures how differently a specified test behaves on two distributions or experiments. For a binary-output distinguisher and distributions , one common definition isA cryptographic security game must state its convention and the allowed computation and observations. Provable security uses such quantitative bounds together with the resources required by a security reduction.[ref]
Practice-Oriented Provable-Security by Mihir Bellare. §§2.2 and 3.2, reductions and concrete security
An original two-world example explains a common normalization difference. Let be a bit equal to one with probability , and a bit equal to one with probability . The test has . If a challenger selects the world with equal prior probability and the observer guesses X on output one and Y on output zero, its success probability is . Its advantage above random guessing is , half the probability-gap convention.
In general, orienting the decision rule toward the larger probability givesThus a statement of advantage can mean either a probability gap of or a success probability , depending on the convention. The numerical security claim is incomplete until that choice is specified.
If every event test is allowed, the largest probability gap is total variation distance. Restricting the distinguisher to an efficient algorithm yields a computational notion: distributions can differ substantially statistically while being difficult for a resource-bounded observer to distinguish. Computational indistinguishability describes the asymptotic version indexed by a cryptographic security parameter.
For any fixed , adding and subtracting its intermediate acceptance probability givesFor example, bounds and on two successive changes give an overall bound . This simple triangle inequality explains how a sequence of controlled experiment changes can support a security argument. The distributions, permitted observers and resource costs must remain the ones justified at each step.
Let be uniformly distributed over the bit strings of length , and disclose only its Hamming weight , the number of one-bits. This is a deterministic cryptographic leakage function. Its consequences depend on the observed weight, even though has only possible values. A permitted disclosure belongs in the security model; the existence of that model does not establish that the disclosure is harmless.[ref]
Universally Composable Security: A Tutorial by Ran Canetti. PDF pp. 25 and 33, permitted leakage and message-length disclosure
There are strings of weight . Hence has a binomial distribution, and conditional probability givesfor each compatible string . The optimal complete-string guess therefore succeeds with probability after that observation. For , observing leaves six equally likely strings; observing identifies
0000 exactly.Averaging over disclosed weights yieldscompared with before disclosure. For four bits this changes to . The worst conditional outcome has success probability one. An average guarantee and a guarantee for every observation are consequently different claims.
The information entropy calculation answers another question. Since is determined by , the mutual information satisfies andFor , bits and bits. These entropy values are not obtained by taking the logarithm of the average guessing probability. All calculations here assume the uniform prior and no additional correlated observation.
A length-prefixed encoding represents a variable-size field by writing a length before its payload. The length's units, width, endianness, permitted range and inclusion or exclusion of the prefix itself are part of the serialization format. For example, the Transport Layer Security presentation language counts vector lengths in bytes and encodes variable-length vectors with a length field whose width follows the specified upper bound.[ref]
An original two-field format uses one unsigned byte for each payload length:Here counts payload bytes and is concatenation. The ASCII fields
ab and c give 02 61 62 01 63, while a and bc give 01 61 02 62 63. Bare concatenation would give 61 62 63 in both cases. This distinction is useful when a cryptographic hash function or message authentication code must commit to two separate fields.The encoding is an injective function on its stated input set. Read the first length byte , then exactly bytes for ; read the next length byte , then exactly bytes for . This reconstructs both fields uniquely. For a complete two-field record, require that no bytes remain. Missing bytes, absent length fields or forbidden lengths are rejected rather than silently reinterpreted. The proof depends on these parsing rules, not merely on putting some number before the data.
A fixed-width length field also imposes a representable limit: 256 payload bytes cannot be encoded by the one-byte scheme above. Truncating that length modulo 256 would make the parser see zero and destroy the intended format. A larger format must specify a larger prefix or a different encoding.
Finally, byte count and text-character count can differ. The text
é has two bytes c3 a9 in UTF-8, so its one-byte length prefix here is 02. A length prefix provides boundaries; cryptographic domain separation may additionally require a field type, role label or protocol version to distinguish records with different meanings.In CPython, a code object represents compiled executable Python code. It stores bytecode and metadata such as constants, referenced names and source positions. A function object additionally supplies the global namespace, default argument values and, when needed, a closure connecting free variables to captured values. A code object by itself does not contain that execution context.[ref]
For example, calling a function factory twice can create two functions with the same code object but different captured values. Their behavior differs because their closures differ, even though their instructions are shared. Inspecting
f.__code__ therefore describes executable structure rather than a complete snapshot of f's environment. Python documents code objects as immutable; version-specific bytecode details should not be treated as a permanent cross-version file format.A function object is a callable runtime object representing a function together with the context needed to execute it. In CPython, a Python-defined function object refers to a code object, its defining global namespace, default argument values and any captured bindings. The code object alone does not contain all this context.[ref]
For example, a factory
make_adder(k) can return a nested function computing x+k. Calling the factory with two and five can produce function objects sharing one code object but retaining different values of k through their programming closures. Their results on input ten are twelve and fifteen. This explains why identifying compiled instructions is insufficient to identify a callable's behavior.Online text: www.davidtong.org/teaching/cosmology/cosmohtml/S2
Indirect reciprocity is cooperation in which helping one individual affects the help received from a different individual, often through reputation. For example, individual A helps B; C observes the act and later helps A. B need never repay A. In direct reciprocity, by contrast, the same pair exchanges help over repeated encounters.
Martin A. Nowak and Karl Sigmund's 1998 model assigned individuals an image score reflecting earlier helping. Potential donors used that information when deciding whom to help, and successful strategies became more frequent. In the model, let be the donor's cost, the recipient's benefit, and the probability of knowing a recipient's reputation. An evolutionarily stable strategy based on helping required . With and , the threshold is ; merely observing that help is beneficial does not meet this information requirement.[ref]
Evolution of indirect reciprocity by image scoring by Martin A. Nowak and Karl Sigmund. Nature 393, pp. 573–577; abstract and analytic stability condition
The condition belongs to this reputation model. It is not a universal numerical threshold for every system described as indirect reciprocity.
Pinned article: Introduction to the OurBigBook Project
Welcome to the OurBigBook Project! Our goal is to create the perfect publishing platform for STEM subjects, and get university-level students to write the best free STEM tutorials ever.
Everyone is welcome to create an account and play with the site: ourbigbook.com/go/register. We belive that students themselves can write amazing tutorials, but teachers are welcome too. You can write about anything you want, it doesn't have to be STEM or even educational. Silly test content is very welcome and you won't be penalized in any way. Just keep it legal!
Intro to OurBigBook
. Source. We have two killer features:
- topics: topics group articles by different users with the same title, e.g. here is the topic for the "Fundamental Theorem of Calculus" ourbigbook.com/go/topic/fundamental-theorem-of-calculusArticles of different users are sorted by upvote within each article page. This feature is a bit like:
- a Wikipedia where each user can have their own version of each article
- a Q&A website like Stack Overflow, where multiple people can give their views on a given topic, and the best ones are sorted by upvote. Except you don't need to wait for someone to ask first, and any topic goes, no matter how narrow or broad
This feature makes it possible for readers to find better explanations of any topic created by other writers. And it allows writers to create an explanation in a place that readers might actually find it.Figure 1. Screenshot of the "Derivative" topic page. View it live at: ourbigbook.com/go/topic/derivativeVideo 2. OurBigBook Web topics demo. Source. - local editing: you can store all your personal knowledge base content locally in a plaintext markup format that can be edited locally and published either:This way you can be sure that even if OurBigBook.com were to go down one day (which we have no plans to do as it is quite cheap to host!), your content will still be perfectly readable as a static site.
- to OurBigBook.com to get awesome multi-user features like topics and likes
- as HTML files to a static website, which you can host yourself for free on many external providers like GitHub Pages, and remain in full control
Figure 2. You can publish local OurBigBook lightweight markup files to either OurBigBook.com or as a static website.Figure 3. Visual Studio Code extension installation.Figure 5. . You can also edit articles on the Web editor without installing anything locally. Video 3. Edit locally and publish demo. Source. This shows editing OurBigBook Markup and publishing it using the Visual Studio Code extension. - Infinitely deep tables of contents:
All our software is open source and hosted at: github.com/ourbigbook/ourbigbook
Further documentation can be found at: docs.ourbigbook.com
Feel free to reach our to us for any help or suggestions: docs.ourbigbook.com/#contact





