---
name: "srcredact"
section: "1"
platform: "linux"
package: "texlive-doc"
version: "2026.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/srcredact"
---

# srcredact(1)

a program for redaction of text files

## NAME

srcredact - a program for redaction of text files

## SYNOPSIS

srcredact \[*OPTIONS*\] **-e** *audience* \[*full\_file*\]

srcredact \[*OPTIONS*\] **-u** *audience* *full\_file* \[*redacted\_file*\]

srcredact **-l** \[*full\_file*\]

srcredact **-h\|-v**

## DESCRIPTION

**srcredact** is the program to extract \`\`redacted versions'' of the master file (option **-e**) or to incorporate the changes in the redacted versions into the master file (\`\`unredact'', option **-u**).

The master file consists of *chunks* intended for different audiences.  Each audience has a *name*, e.g. `"classified"`, `"unclssified"`, `"expert"` etc.  Chunks are started and stopped by *guard lines*.  Each guard line has the format (for the default TeX syntax)

```
  %<*name1|name2|...>
```

or

```
  %</name1|name2|...>
```

In the first cases the text following the guard is *included* for the audiences `"name1"`, `"name2"`, ....  In the second case it is *excluded* for these audiences.

THere is a special audience `"ALL"`: a wild card for all audiences. Thus the idiom

```
  %</ALL>
  %<*classified>
```

means that the chunk is excluded for all audiences but `"classified"`

Exactly one of the options  **-e** (extract) or **-u** (unextract) must be present.  In  the extract mode the  non-option argument is  the name of the full file.   If it is absent, or is `"-"`,  standard input is used. In the unextract mode the first non-option argument

## OPTIONS

- **-c** *list of comment patterns*

  Use the given pattern for comment lines to search for guards instead of the default `"TeX"` pattern.  The recognized patterns are:

  - **c**

    ```
      /*<guard>*/
    ```

  - **cpp**

    ```
      //<guard>
    ```

  - **fortran**

    ```
      C<guard>
    ```

  - **shell**

    ```
      #<guard>
    ```

  - **TeX**

    ```
      %<guard>
    ```

  The pattern names should be separated by commas, and the list may be enclosed in quotes to prevent shell expansion, e.g

  ```
    -c "TeX, c, shell"
  ```

- **-d**

  Debug mode on.

- **-e** *audience*

  Extract the contents for the current audience into the file *file*. The cuurent audience is guessed from the *file* name, if the latter has the structure *base*-*audience*.*extension*, e.g. `"report-unclassified.tex"`.  The key **-a** overrides this guess and should be used if the file name does not follow this pattern.  The file name `"-"` means the standard output.

- **-h**

  Print help information and exit.

- **-l**

  List all audiences set in the file (one per line) and exit.

- **-u** *audience*

  Take a edited file intended for the *audience* (the second non-option argument) and incorporate the changes in it into the full file (the first non-option argument).  If the second argument is missing, standard input is used instead.  As usual, `"-"` also means standard input.  Note that only one of the two file arguments in this case can be standard input.

- **-v**

  Print version information and exit.

- **-w** *on\|off\|1\|0\|true\|false*

  If `"on"`, `1` or `"true"` (the deafult), implicitly wrap the full document into the guards

  ```
   %<*ALL>
   ...
   %</ALL>
  ```

## RETURN VALUE

The program returns 0 if successful, 1 if conflicts were found in the `"unextract"` mode and 2 in case of problems.

## CONFLICTS IN UNEXTRACT MODE

Like the standard [*diff3*(1)](/diff3/1.md) tool, the program may find conflicts between the full version and the edited one in the **-u** mode.  Then the resulting file brackets the conflicts in the usual manner, e.g.

```
  <<<<<<< /tmp/BrjXo0hMOB/full
  %</nobonds>
  Forty-five tons best old dry government bonds, suitable for furnace, gold
  7 per cents., 1864, preferred.
  %<*nobonds>
  ||||||| /tmp/BrjXo0hMOB/extracted
  Forty-five tons best old dry government bonds, suitable for furnace, gold
  7 per cents., 1864, preferred.
  =======
  >>>>>>> /tmp/BrjXo0hMOB/new
```

Here `"full"` is the full document, `"extracted"` is the extracted file for the given audience, `"new"` is the edited file.

## AUTHOR

Boris Veytsman, borisv@lk.net

This work was commissioned by Consumer Financial Protection Bureau, United States Treasury.

## LICENSE AND COPYRIGHT

Copyright (C) 2015 Boris Veytsman.  Version 1.0

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
